Ind*_*cks 6 angularjs angularjs-scope angularjs-ng-init angular-ngmodel
ng-init是否关注像ng-model这样的实例化属性的变化?
显然不是,所以我设置了一个如下所示的手表:
app.js
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.$watch('myProp1', function(newVal, oldVal){
$scope.myProp1 = newVal
})
});
Run Code Online (Sandbox Code Playgroud)
HTML
<body ng-controller="MainCtrl">
<input ng-init='myProp="my property"'>{{myProp}}</br>
<input ng-init='myProp1="my 1 property"'>{{myProp1}}</br>
<input ng-init='myProp11="my 11 property"' ng-model='myProp11'>{{myProp11}}
Run Code Online (Sandbox Code Playgroud)
这是plnkr
ng-init是否关注像ng-model这样的实例化属性的变化?
不,只是初始化范围上的属性.我建议不要使用它.标记不适用于变量初始化,您应该尽可能在控制器中执行此操作.
如何查看ng-init实例化的属性中的更改?
您可以像观看任何其他房产一样观看,但观看并不意味着手表会被触发.仅在摘要周期期间触发手表,并且仅当角度与特定动作有关时才会调用摘要周期.
上面的$ watch功能有什么问题?
您的监视prop1将永远不会执行(在初始化初始化之后),因为您永远不会更改模型值,因为没有绑定到它的ngModel.并且没有对元素进行角度动作,因此不会发生消化循环.
作为示例,只需在元素上附加一个keyup事件,并将输入值分配给属性myProp,因为您已经注册了keyup处理程序,它将在处理程序运行后触发摘要周期,您将看到手表被执行并绑定得到更新
<input ng-init='myProp="my property"' ng-keyup="test(myProp=$event.target.value)">{{myProp}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6318 次 |
| 最近记录: |