看看这个小提琴:http: //jsfiddle.net/bwjbz/6/
我正在尝试严格执行正整数。我已经尝试了几种途径,但我似乎无法得到我正在寻找的东西。(如果您尝试几次,您最终可能会得到一个非数字或负数来粘贴输入)。
除了上面的小提琴,我还尝试过使用数字过滤器并尝试创建自己的指令。
号码过滤器:
<input type="number" min="0" max="1000" value="{{itm.qty | number:0}}" required data-ng-model="itm.qty" data-ng-change="setQty()" data-whole-number>
您会注意到数据整数指令。我对指令还不是很满意,但就是这样:
app.directive('wholeNumber', function() {
return function(scope, elem, attrs) {
elem.on("blur", function() {
var num;
num = parseInt(elem.val(), 10);
num = Math.abs(num);
scope.$apply(elem.val(num));
});
};
});
指令本身会进行正确的 DOM 操作,但模型不会使用新值进行更新。
所以这个问题有两个方面:
小提琴可以在模型上设置正确的值,但模型文本不会更新。但是,在另一种方法中,我将模型 itm 的数量设置为 1,它会同时更改模型和可见值。您会注意到它实际上确实正确地更改了模型(例如,当值设置为 1.56 时,请注意绑定,足球数 = 1)。
为什么指令不传播对模型的更改?
提前非常感谢,-布赖恩