为什么我的$watch只烧过一次
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
来明确我想要实现的目标:构建一个明显更复杂、可重用的小部件,在本例中,它将作为recipient
在$scope.cert
上工作。
这可能是因为ng-include
将在包含的HTML上创建一个新的继承作用域,因此控制器中的$scope.addressInput
与getRecipientWidget.html
中的$scope.addressInput
不是相同的引用
这并不容易解释,但您应该将ng-controller
放在getRecipientWidget.html
的HTML中(而不是放在上面包含它的div上),或者您可以使用像something.addressInput
这样的对象来代替原始addressInput
,这样可以避免原始类型(数字/字符串)上的引用问题。
ng-include创建新的作用域。
试试这个
<md-text-float ng-model="$parent.addressInput"></md-text-float>
Plunker示例
相关文章:
- ¿如何每天只显示一次特定的容器
- 只运行一次提取的脚本
- Javascript匹配以从URL中删除部分文件名-替换最后一次出现的内容
- 正在查找最后一次出现的文本
- 循环遍历数组并仅获取一次相同的值
- 在windowsphone javascript中visted一次后的非活动窗体
- 控制不止一次跳水的风格's风格使用java脚本动态,使用类
- 如何每 30 秒加载一次页面的一部分
- Javascript - 需要重复数组迭代,每x秒更改一次元素的类
- 将匹配字符串中最后一次出现的点的正则表达式
- 如何使用上一次调用的数据进行第二次 JS .post 调用
- 删除/隐藏链接后最后一次出现的字符串
- 嵌套在jQuery中的PHP只执行一次.我希望它每次都执行
- JavaScript 循环,每 30 秒调用一次不同的函数
- 使用 setTimeout 调用一次 forEach 的回调函数即可完成
- 创建不会中断上一次调用的重复动画
- 在javascript中获取除最后一次外的所有模式
- 删除javascript中最后一次出现的字符串
- 我如何才能得到一个表单提交只有一次隐藏的值已经从谷歌地理编码服务更新
- 我如何使这个javascript只执行一次它的动作