这有点像先前的问题。我一直在尝试使用模型/数组
中的指令和数据我的模型看起来像这样:
$scope.testModel = {
inputA:[1,2,3]
};
然后我会为每个人提供输入。
我的指令是在密钥上检查输入是否大于给定数字(10)。如果是,则将其设置为10.
link: function(scope, element) {
scope.$watch('ngModel',function(val){
element.val(scope.ngModel);
});
element.bind("keyup", function(event) {
if(parseInt(element.val())>10){
element.val(10);
scope.ngModel=element.val();
scope.$apply();
}
});
}
问题是我收到错误,具体取决于输入:
TypeError:无法设置未定义的属性“0”
这是查看我设置的错误和代码的小提琴:http://jsfiddle.net/prXm3/3/
注意
我不想更改数据集,因为我直接从服务器接收数据集。我知道我可以将模型更改为inputA0:1,inputA1:2,inputA2:3
并使其工作,但是当我的应用程序获取数据时我将不得不转换数据,然后在我发送回服务器时重新转换它。我希望在设置模型时离开模型。
答案 0 :(得分:3)
由于您的指令与ngModel
交互,因此您应该使用它来更新模型和视图:
angular.module('test', []).directive('myDirective', function() {
return {
restrict: 'A',
require: '?ngModel',
link: function(scope, element, attrs, ngModel) {
if (!ngModel) return;
ngModel.$parsers.unshift(function(viewValue) {
if(parseInt(viewValue) > 10) {
ngModel.$setViewValue(10);
ngModel.$render();
return 10;
}
else
return viewValue;
});
}
}
});
也许您有兴趣查看以下帖子以获取更多信息: