当绑定(bind)到 ngModel 时,如果你有一个对象:
scope.someObj = {
prop: 10,
prop2: [20, 30],
subObj: {
prop: 40
}
}
并将其附加到一些输入字段,如下所示:
<input type="number" ng-model="someObj.prop" />
<input type="number" ng-model="someObj.prop2[0]" />
<input type="number" ng-model="someObj.prop2[1]" />
<input type="number" ng-model="someObj.subObj.prop" />
并将事件监听器放入每个事件的 $render 触发器中,如下所示:
ngModel.$render = function() {console.log("Hello");};
$render 仅在第一个输入被编辑时才会触发,而在其他输入被编辑时则不会。基本上,$render 不会在绑定(bind)到比一层更深的任何内容的模型上触发。
有没有办法强制它这样做?
最佳答案
我使用$scope.$watch来监控它。
<input ng-model="myInputs.a">
<input ng-model="myInputs.b">
var obj = {};
$scope.$watch('myInputs', function(){
// do whatever here ....
// you can assign variables to myInputs
obj.x = myInputs.a;
}, true);
这里的关键是添加最后一个参数true
,以便它深度监视您的对象。
关于javascript - 即使绑定(bind)到更深的对象或数组,也使 ngModel 触发 $render,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17391394/