如何从服务更新绑定到属性

时间:2014-03-17 15:09:20

标签: angularjs angularjs-service

我试图找出在AngularJs应用程序中的服务中隔离域逻辑的最佳方法。我目前正试图弄清楚如何将更改传播到绑定到Services上的模型的属性。

例如,如果您的应用程序中有购物车并且您正在使用cartService来管理用户购物车,那么如何通知绑定到应用程序中已更新购物车的属性,以便在用户添加时一个项目到购物车,你的其他视图可以根据需要更新吗?

目前我所看到的每一种方法都涉及在我的服务中注入一个范围,感觉不对,因为它会将我的服务连接到AngularJs,我喜欢我的域与框架无关的想法。为了解决这个问题,我可以介绍一个pub \ sub模式,但我想先看看其他人是如何处理它的。

AngularJs中是否有一种方法可以更新绑定到服务的属性而无需将范围或其他角度框架服务注入域服务?

1 个答案:

答案 0 :(得分:1)

您的服务可以实现一个使用$rootScope来确保运行摘要的基本方法(更新绑定)

在基础服务中:

function MyService(){};

MyService.prototype = {
    applyChanges: function(){
       if(!$rootScope.$$phase) $rootScope.$apply();
    };
};

然后从更改模型的方法中使用它。 如果将来在角度变化中执行此实现,则可以将其保存在一个位置。