范围$注意不要对可变变化开火
scope.$watch not firing on variable change
下面有以下代码片段。我遇到的问题是,每当modal.isOpen的值设置为true时,$watch语句都不会触发。我尽量避免使用scope$申请我在这里做错了什么。。。
Angular指令中的内部链接函数:
link: function (scope, elem, attrs) {
scope.$watch('modal.isOpen', function(newValue, oldValue) {
if (newValue)
console.log("This does not trigger...");
}, true);
$document.bind('keydown', function (e) {
if(e.keyCode >= 48 && e.keyCode <= 90) {
scope.modal.isOpen = true;
elem.find('input')[0].focus();
}
..........
});
您应该监视在给$watch
函数的字符串中不应该有scope
的属性。
scope.$watch('modal.isOpen', function(newValue, oldValue) {
从自定义事件修改scope
时,不会更新绑定。您需要使用$timeout
/$apply()
启动摘要循环来更新绑定。(如果任何代码在angular上下文之外运行,angular就不会运行摘要循环来更新绑定)。
$document.bind('keydown', function(e) {
if (e.keyCode >= 48 && e.keyCode <= 90) {
$timeout(function() {
scope.modal.isOpen = true;
elem.find('input')[0].focus();
});
}
..........
});
相关文章:
- 单击页面上的链接后高度发生变化
- React redux初始化功能,无论状态变化如何
- 角度ng变化或ng点击选择can'不起作用
- 每个选择器的Jquery css颜色都在变化,但字体大小却没有变化
- JS幻灯片与CSS背景颜色变化
- 点击不'似乎没有开火
- 重新加载页面时Javascript变量发生变化
- 如何获得Bootstrap Datepicker的年和月,因为它在变化
- 如何用jquery替换字符串中可能变化的字符
- 检测数据的变化
- 如何检测和打印变化变量LESS
- 当文本不断变化时,如何避免在按钮内移动文本
- 当数据库中的某些内容发生变化时调用HTTP方法Meteor.js
- jQuery将侦听器的大小调整为只触发宽度的变化
- 根据元素高度和宽度的百分比变化增加或减少字体大小
- 调用$.each()函数时上下文发生变化
- 强制 $scope.$watch 只开火一次
- 创建一个不断变化的谷歌涂鸦风格的标题
- Javascript对象颜色动态变化
- 范围$注意不要对可变变化开火