我已经为 Chrome 应用程序中的串行通信编写了一个小型 JS 库,并且它本身运行良好。然而,我们在与 Angular 集成时遇到了一个问题:我没有办法从内部观察控制器外部串行对象的属性,而且我也无法找到解决方法。理想情况下,有一个计算成本不太高的解决方案,但在这一点上,我不排除某种方法将整个库转换为更适合 Angular 的格式。但是,在这种情况下,我不确定它是否应该采用服务或其他格式。任何帮助,将不胜感激。
只是从这里借用了这个想法:在 AngularJS 中,如何在 URL 哈希上添加 $watch? https://stackoverflow.com/questions/22002764/in-angularjs-how-do-i-add-a-watch-on-the-url-hash
$scope.$watch 接受函数作为第一个参数,所以你可以这样做:
$scope.$watch(function () {
return mylib.myproperty
}, function (value) {
// do stuff
});
更新:
正如评论中所指出的,当 mylib.myproperty 更改时,控制器直到下一个摘要循环才会知道它。由于 mylib 不支持角度,因此您需要使用普通的 javascript 回调机制:
mylib.on_myproperty_change(function(){
$scope.$digest(); // this will cause the $watch to be re-evaluated
});
但从现在起你已经拥有了mylib.on_myproperty_change
你真的不需要$watch
任何东西,所以你可以删除手表,然后
mylib.on_myproperty_change(function(){
//do the stuff that you did in the the $watch
$scope.$digest();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)