Angularjs 将变量从服务/工厂绑定到控制器
我有一个变量,将由一个或多个控制器使用,由服务更改。 在这种情况下,我构建了一个服务,将此变量保存在内存中,并在控制器之间共享 问题是:每次变量更改时,控制器中的变量都不会实时更新 我制作这把小提琴是为了帮忙 ---请注意,Angularjs 将变量从服务/工厂绑定到控制器,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个变量,将由一个或多个控制器使用,由服务更改。 在这种情况下,我构建了一个服务,将此变量保存在内存中,并在控制器之间共享 问题是:每次变量更改时,控制器中的变量都不会实时更新 我制作这把小提琴是为了帮忙 ---请注意,{{countService}}或{{countFactory}在我递增count值时从不更新 如何将服务/工厂变量绑定到控制器中的$scope.variable?我做错了什么?不能绑定变量。但是您可以绑定变量访问器或包含此变量的对象。这里是固定的 基本上,您必须向范围传递一
{{countService}}
或{{countFactory}
在我递增count值时从不更新
如何将服务/工厂变量绑定到控制器中的$scope.variable?我做错了什么?不能绑定变量。但是您可以绑定变量访问器或包含此变量的对象。这里是固定的 基本上,您必须向范围传递一些可以返回/或保存当前值的内容。例如 工厂:
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();
};
}
视图:
这是我的countFactory变量:{{countFactory()}}
这是我在单击变量后更新的:{{countF}
工厂++
从服务绑定任何数据都不是一个好主意,但如果您还需要它,我建议您使用以下两种方法
1) 获取不在服务中的数据。获取控制器中的数据,绑定它不会有任何问题
2) 您可以使用AngularJs事件功能。您甚至可以通过该事件向发送数据
如果你需要更多的例子,这里的文章可能会帮助你
从本质上讲,工厂只是一个共享(单例)容器,用于存储数据和数据上的函数。您可以手动管理/同步$scope?@sambomartin权限内外的数据。这是一篇很棒的文章,通过将函数作为testFactory.getCount传递,而不是调用它,并在UI中调用它,您已经绑定了服务值。然而,如果您$scope.countFactory=testFactory.getCount(),则在初始化时只需调用函数一次,而不绑定任何内容?所以,如果值发生变化,以后不会更新吗?@sambomartin,工厂不是单例的。如果您想使用单例容器,请使用服务。服务和工厂在角度上基本相同,只是服务是单例的,工厂不是。@Aram不,工厂也是单例的;Angular中的所有服务都是单例服务。当您在模块上注册工厂函数时,它将在调用时创建一个服务实例。
<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>