我的工厂的功能setRoot()如下所示,并希望在控制器中使用它
$scope.testSubmit = testFactory.setRoot();
但是当打开html时,有ng-submit =" testSubmit()"我只是在输入任何内容之前执行工厂函数;)那么我如何在ng-submit中使用工厂函数?
.factory('testFactory', function($rootScope){
return {
setRoot: function(){
$rootScope.root = 'inside testFactory';
}
}
})
答案 0 :(得分:1)
您不想立即调用您的函数,所以请改为:
$scope.testFactory = testFactory;
在你的ng-submit
做:
ng-submit="testFactory.setRoot()"
这将首先将工厂绑定到$scope
,这使您可以访问其功能,在这种情况下.setRoot
,您只想在实际ng-submit
中调用。不是将工厂绑定到$scope
。
你应该知道这一点,但只要你将()
放在一个函数后就意味着你执行它。如果您只想绑定某个功能但稍后再调用它,则可以$scope.testFactory = testFactory.setRoot
然后直接使用ng-submit="testFactory()"
。
你的功能最大的问题是你试图在工厂内设置$rootScope
,这是行不通的。您也无法在工厂内设置$scope
。因此,您必须返回一个值,然后将其绑定到控制器中的$rootScope
或$scope
。