我现在遇到这种情况,我将模型实现为纯JavaScript对象。因此,您可以同步向模型询问值,并且可以订阅事件以获得有关模型更新的通知。但我不喜欢这样做。它导致了大量的代码和检查无处不在。
现在,我一直在想,利用Angular并为模型使用隔离范围不是更好吗?这样,任何对特定值感兴趣的人都可以只看模型进行更改。
示例:
function UserService($rootScope) {
var model = $rootScope.$new(true);
this.getModel = function() {
return model;
};
}
function userWidget(userService) {
var user = userService.getModel();
user.$watch('isLoggedIn', function(isLoggedIn) {
//React to if the user i signed in or not...
});
}
这是一个好主意还是一个坏主意?有什么想法吗?你是怎么解决这个的?
即使愚蠢,这是一个小型演示: http://plnkr.co/edit/JTggQ0FVYpo4saLmjLAo
谢谢!
/马丁
答案 0 :(得分:0)
它没有任何问题,但在我随机做之前,我个人会有一个好处。 $ rootScope。$ new实际上有点沉重 - 一个AngularJS范围有很多额外的引用对象,如兄弟姐妹和父母。如果你有5个,谁在乎呢?但是,如果你有5000个垃圾收集器需要管理的话。如果它给你一些优势是完全合理的,但如果只是为了它自己,我就不会打扰。
你的例子中是否有理由依赖变量吊装?它通常被视为副产品或反模式,因此它可能会摒弃其他帮助维护代码的开发人员。或者你是独自飞行? :)