javascript - 即使绑定(bind)到更深的对象或数组,也使 ngModel 触发 $render

标签 javascript angularjs angularjs-directive angularjs-scope

当绑定(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/

相关文章:

javascript - onMouseOver 并按下鼠标左键(事件)

javascript - 使用 Javascript 和 Angularjs 创建数组的子集

AngularJS - 一个简单的无限滚动

javascript - 在 $scope.$watch 中调用一个函数

javascript - Z-Index 未覆盖底部元素

javascript - 扩展 javascript 通用 View 模型。 (昏死)

javascript - 为什么 router.go() 在 Vue Router 中不起作用?

具有失败键的 Javascript 对象

javascript - AngularJS 滑动过渡

javascript - 如何在自定义指令内的某些标记上设置 ng-change 属性?