#angularjs
#angularjs
Вопрос:
Я получаю эту ошибку, когда нажимаю кнопку, ничего не вводя в поле ввода. Я вижу, что это связано с соглашением об именовании как «lunchCtrl.iform.inputText». когда я использую это как «lunchCtrl.inputText» или просто «inputText» в контроллере и html, все идет хорошо без ошибок для пустого значения при нажатии кнопки. если я введу какой-либо текст и нажму кнопку, все будет хорошо.
кто-нибудь может мне помочь, что здесь не так. я прикрепил код в следующем jsfiddle [здесь] [1] . пожалуйста, помогите мне найти причину.
https://jsfiddle.net/29bmy95j/
код для здесь: index.html
Проверка обеда
<div class="form-group">
<input id="lunch-menu" type="text"
placeholder="list comma separated dishes you usually have for lunch"
class="form-control" ng-model="lunchCtrl.iform.inputText">
</div>
<div class="form-group">
<button class="btn btn-default" ng-click="checkTooMuch()">Check If Too Much</button>
</div>
<div class="form-group message">
<!-- Your message can go here. -->
</div>
Entered values::{{lunchCtrl.iform.inputText}}
<p ng-bind="errorMsg" style="color:red"></p>
App.js:
var app=angular.module('LunchCheck', []);
app.controller('LunchCheckController', ["$scope",function($scope){
//function for checkTooMuch() ng-click event
$scope.checkTooMuch=function(){
var inputfieldVal=$scope.lunchCtrl.iform.inputText;
$scope.inputfieldValScope=inputfieldVal;
var array=inputfieldVal.split(',');
//$scope.array=array;
var arrLen=array.length;
if(arrLen > 3){$scope.errorMsg="Too much!";}
else{$scope.errorMsg="Enjoy!";}
}
}]);
Ответ №1:
Потому $scope.lunchCtrl.iform
что не определено, поэтому изначально, когда вы ничего не вводите в текстовое $scope.lunchCtrl.iform.inputText
поле, это вызовет ошибку.
$scope.checkTooMuch=function(){
var inputfieldVal=$scope.lunchCtrl.iform.inputText;//error
Таким образом, исправление будет заключаться в
ВАРИАНТ 1
напишите проверку и избегайте:
$scope.checkTooMuch=function(){
if (!$scope.lunchCtrl.iform.inputText){
return;
}
...your code
ВАРИАНТ 2
Определите свою переменную, как показано ниже, в контроллере
app.controller('LunchCheckController', ["$scope",function($scope){
//var v=$scope.inputText='';
this.iform = {inputText:""};
...
рабочий код здесь
Комментарии:
1. Но у меня есть сомнения здесь. В этом случае, если я проверяю «arrLen», не вводя ничего в поле ввода, я получаю значение «1». я думаю, это должно быть «0». мне интересно, почему это «1» с предоставленным вами решением.