我有一个文本输入字段,我不希望用户允许已经存在的单词(Case inSensitiviness)下标有JSON
我尝试过使用
var value = val.toUpperCase();
控制台
下的异常VM226 angular.js:6173 TypeError: Cannot read property 'toUpperCase' of undefined
at Child.$scope.checkQuestions (VM227:78)
at Object.get (VM226 angular.js:6801)
at Object.$digest (VM226 angular.js:8563)
at Object.$apply (VM226 angular.js:8771)
at VM226 angular.js:986
at Object.invoke (VM226 angular.js:2873)
at resumeBootstrapInternal (VM226 angular.js:984)
at bootstrap (VM226 angular.js:998)
at angularInit (VM226 angular.js:959)
at VM226 angular.js:16310
我的代码:
var myapp = angular.module('myapp', []);
myapp.controller('FirstCtrl', function($scope)
{
$scope.$watch('vm.status.name', function(val)
{
var myarray = [];
for (var i = 0; i < $scope.tickets.length; i++)
{
var name = $scope.tickets[i].name.toUpperCase();
myarray.push(name);
}
$scope.checkQuestions = function()
{
//var value = val.toUpperCase();
if (myarray.indexOf(val) !== -1)
{
return true;
}
else
{
return false;
}
};
});
});
这是我的小提琴
尝试在文字输入下输入打开和关闭
答案 0 :(得分:1)
您的变量val
看起来未定义。
答案 1 :(得分:1)
我认为,没有必要添加watch来输入文本值。
您可以在外面初始化myarray
。
您可以为checkQuestions
功能创建单独的方法。
像:
$scope.myarray = //add code to initialize this
$scope.checkQuestions = function()
{
if (myarray.indexOf(vm.status.name.toUpperCase()) !== -1)
{
//do something.
}
else
{
//do other thing
}
};
答案 2 :(得分:0)
尝试在var v = val;
回调函数中添加$scope.$watch
,然后使用v
等var value = v.toUpperCase();
答案 3 :(得分:0)
这个小提琴似乎对我有用(当我输入“打开”时,保存按钮被禁用。 http://jsfiddle.net/9fR23/426/
主要区别在于将checkQuestions
函数替换为$watch
事件函数中设置的范围变量。我觉得这可能是你想要做的事情。您现有的代码在$watch
函数中定义了函数,并尝试使用它中的变量。