[英]Why does my $watch only ever fire once?
我正在考虑一些小部件并且$watch
表达式在一个文件中完美地工作但是现在我将相关的控制器部分移动到一个新的控制器中并将标记转换为新的html并且$watch
在初始化后正好触发一次但不是编辑相关输入中的输入。
JS:
app.controller('getRecipientWidgetController', [ '$scope', function($scope) {
console.log("controller initializing")
var testReceivingAddress = function(input) {
console.log("change detected")
}
$scope.$watch("addressInput", testReceivingAddress)
} ])
包装器的HTML:
<ng-include
src="'partials/getRecipientWidget.html'"
ng-controller="getRecipientWidgetController"
ng-init="recipient=cert"> <!-- ng-init doesn't influence the bug. -->
</ng-include>
partials/getRecipientWidget.html
HTML:
<md-text-float ng-model="addressInput"></md-text-float>
我怀疑有一些范围伏都教正在进行中? 我离开了ng-init
以明确我想要实现的目标:构建一个明显更复杂,可重用的小部件,在这个实例中可以在$scope.cert
作为其recipient
。
这可能是因为ng-include
将建立在包含的HTML一个新的继承范围,因此$scope.addressInput
在你的控制器是不是同一基准$scope.addressInput
在getRecipientWidget.html
好吧,这不容易解释,但你应该把ng-controller
放在getRecipientWidget.html
的HTML中(而不是在包含它的上面的div上),或者你可以使用诸如something.addressInput
的对象而不是raw addressInput
这避免了原始类型(数字/字符串)的引用问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.