gpt4 book ai didi

angularjs - ng-init 是否像 ng-model 一样监视实例化属性的变化?

转载 作者:行者123 更新时间:2023-12-02 22:36:13 25 4
gpt4 key购买 nike

ng-init 是否像 ng-model 一样监视实例化属性的变化?

显然不是,所以我设置了一个 watch ,如下所示:

app.js

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
$scope.$watch('myProp1', function(newVal, oldVal){
$scope.myProp1 = newVal
})
});

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}}

这里是plnkr

  1. ng-init 是否会像 ng-model 一样监视实例化属性的变化?
  2. 如何观察 ng-init 实例化的属性的变化?
  3. 上面的 $watch 函数有什么问题?

最佳答案

Does ng-init watch over change on instantiated property like ng-model does?

不,它只是初始化作用域上的属性。我建议不要使用它。标记不适用于变量初始化,您应该尽可能在 Controller 中进行。

How do I watch the changes in the property instantiated by ng-init?

您可以像观看任何其他属性一样观看,但观看它并不意味着观看会被触发。仅在摘要周期期间触发监视,并且仅当 Angular 与特定操作有关时才会调用摘要周期。

What's wrong with the $watch function above?

您在 prop1 上的 watch 永远不会被执行(在 ng Init 初始化之后),因为您永远不会更改模型值,因为没有 ngModel 绑定(bind)到它。并且元素上没有进行任何 Angular Action ,因此不会发生消化循环。

作为示例,只需在元素上附加一个 keyup 事件,并将输入值分配给属性 myProp,因为您已经注册了 keyup 处理程序,它将在处理程序运行后触发摘要周期,您将看到 watch 正在执行并且绑定(bind)正在更新

 <input ng-init='myProp="my property"' ng-keyup="test(myProp=$event.target.value)">{{myProp}}

<强> plnkr

关于angularjs - ng-init 是否像 ng-model 一样监视实例化属性的变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25574048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com