Angular.js deep watch Coffeescript class instance
Angular.js deep watch Coffeescript class instance
我有一个这样的 CoffeeScript 类:
class Foo
constructor: (@bar) ->
setTimeout () =>
@bar = "changed!"
, 5000)
在我的控制器中有一个这样的列表:
$scope.list = [new Foo("1"), new Foo("2")]
我有这样的 HTML:
<ul>
<li ng-repeat="baz in list">
{{baz.bar}}
</li>
</ul>
5 秒后,$scope.list
项的值会更改,但这不会反映在 HTML 中。
事情部分连接正确,因为如果我添加此代码,一切正常(尽管略有延迟)。HTML 将重新绘制并正确更新。
setInterval () ->
$scope.$apply () ->
$scope.crashes = $scope.crashes
, 5000)
有没有办法确保 HTML 在 CoffeeScript 类的属性更改时更新?
你试过吗:
$scope.$watch('crashes', function (newVal) {
$scope.crashes = newVal
}, true);
将$watch的最后一个参数设置为真实,使其成为深度观察。
不要使用 setTimeout,因为 angularJS 不会跟踪更改,你需要像以前一样调用 $scope.$apply。使用$timeout。
编辑:您可以使用$timeout改进您发布的自定义超时解决方案,并删除 setInterval 和应用。
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 通过id和class属性获取元素
- 菜单栏class=活动引导程序主题无法正常工作
- $(.class).empty总是缺少一个元素
- 将Transform和Instance Variable转换为对象的JavaScript数组
- jQuery[button.class]未检测到用按钮追加行
- javascript点击函数不;不适用于ID和Class
- HTML class=Ajax操作,如何让类点击调用好的操作
- Add a class if var < 0 jquery
- 将鼠标悬停在Angular JS中的一个元素上,并将Class添加到另一个元素中
- Difference between methods of defining JavaScript 'class
- todomvc Backbone's更改为class'编辑'使todo可编辑
- 使用jQuery隐藏和显示具有相同Class的类
- JQuery选择器:如果同级具有.class,则选择td
- jQuery:具有class但不具有$(this)的元素
- Why does "document.querySelector('a.some class'
- Javascript add class 不起作用
- 最好检查tagName还是HTMLAnchorElement的instance
- Angular.js deep watch Coffeescript class instance