绑定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