绑定variables从服务/工厂到控制器

我有一个variables将由一个或多个控制器使用,由服务更改。 在这种情况下,我已经构build了一个服务,将这个variables保存在内存中,并在控制器之间共享。

问题是:每当variables发生变化时,控制器中的variables都不会实时更新。

我创build这个小提琴帮助。 http://jsfiddle.net/ncyVK/

—请注意,当我增加count的值时, {{countService}}{{countFactory}}永远不会更新。

如何将Controller / Factoryvariables绑定到Controller中的$ scope.variable? 我做错了什么?

你不能绑定variables。 但是你可以绑定variables访问器或者包含这个variables的对象。 这里是固定的jsfiddle 。

基本上你必须传递一些东西,这可以返回/或保持当前值。 例如

厂:

 app.factory('testFactory', function(){ var countF = 1; return { getCount : function () { return countF; //we need some way to access actual variable value }, incrementCount:function(){ countF++; return countF; } } }); 

控制器:

 function FactoryCtrl($scope, testService, testFactory) { $scope.countFactory = testFactory.getCount; //passing getter to the view $scope.clickF = function () { $scope.countF = testFactory.incrementCount(); }; } 

视图:

 <div ng-controller="FactoryCtrl"> <!-- this is now updated, note how count factory is called --> <p> This is my countFactory variable : {{countFactory()}}</p> <p> This is my updated after click variable : {{countF}}</p> <button ng-click="clickF()" >Factory ++ </button> </div> 

绑定服务中的任何数据并不是一个好主意,但是如果您再需要这些数据,我build议您遵循以下两种方式。

1)获取数据不在你的service.Get数据里面你的控制器,你将不会有任何问题来绑定它。

2)您可以使用AngularJs Eventsfunction。您甚至可以通过该事件发送数据。

如果你需要更多的例子,这里是可能可以帮助你的文章。

http://www.w3docs.com/snippets/angularjs/bind-value-between-service-and-controller-directive.html