监视指令范围不起作用
Watch directive scope not working
>上下文
我的控制器存储一个数组。按下键盘上的特定快捷键时,我会向此数组添加一个新对象。
数组在指令中用于显示图表。
因此,在按下快捷方式时,图表应使用新值更新。
控制器
vm.observation = [{
"sale": "202",
"year": "2010"
}, {
"sale": "215",
"year": "2011"
}, {
"sale": "179",
"year": "2012"
}, {
"sale": "199",
"year": "2013"
}, {
"sale": "134",
"year": "2014"
}, {
"sale": "176",
"year": "2015"
}];
命令
angular.module('spwApp.directives')
.directive('linechart', [function() {
return {
restrict: 'E',
scope: {
id: "@",
observation: "="
},
link: function($scope, element, attrs) {
$scope.$watch("observation", function(newVal, oldVal){
console.log("OBS : " + newVal);
}, true);
}
}
}])
.HTML
<linechart id="linechart3" observation="vm.observation"></linechart>
当页面加载时,图表正确显示数据,控制台正确记录内部$watch
正确执行。
无论如何,按下快捷方式后,$watch
不会触发,而数组会更新
我在代码中找不到错误
你向数组中添加了一些东西,但数组本身保持不变。常规观察程序仅对更改的值做出反应。这就是为什么 Angular 还提供$watchCollection
:
$scope.$watchCollection("observation",
$watchCollection
还监视数组的内容,即它检查是否删除或添加了某些内容。
相关文章:
- 输入类型范围在angularjs重复内不起作用
- 对于使用传递的数据计算的局部范围变量,角度绑定在自定义指令中不起作用
- Angularjs 更新 setTimeout 中的范围变量不起作用
- 如果端口范围太宽,节点中的端口扫描不起作用
- Angular:从工厂更新范围不起作用
- 范围的Switch语句不起作用
- AngularJS-ng显示范围变量不起作用
- 角度范围不起作用
- Javascript 全局范围不起作用
- 样式<输入类型=“范围”>用于重定向,在触摸设备上不起作用
- jQuery 自定义事件在全局范围内工作,但在对象之间不起作用
- 高于 1 的嘶嘶声范围不起作用
- 通过指令范围传递对象不起作用
- 创建范围功能在除IE以外的其他浏览器中不起作用
- Javascript范围在角度SPA应用程序中不起作用
- 角度范围.$watch在指令中不起作用
- 将数组从文档属性与数据范围进行比较不起作用
- 我已经在全球范围内安装了 slush-phaser-webpack,但它不起作用
- 茉莉花+伊斯坦布尔覆盖范围不起作用
- 高图表导航器和范围刻度不起作用