我有一个带有 setRoot() 函数的工厂,如下所示,并想在 Controller 中使用它
$scope.testSubmit = testFactory.setRoot();
但是当打开有 ng-submit="testSubmit()"的 html 时,我只是在输入任何内容之前执行工厂函数;)那么我如何在我的 ng-submit 中使用工厂函数?
.factory('testFactory', function($rootScope){
return {
setRoot: function(){
$rootScope.root = 'inside testFactory';
}
}
})
最佳答案
您不想立即调用您的函数,所以可以这样做:
$scope.testFactory = testFactory;
并在您的ng-submit
中执行以下操作:
ng-submit="testFactory.setRoot()"
这将首先将工厂绑定(bind)到 $scope
,这使您可以访问其函数,在本例中是 .setRoot
,您只想调用它在实际的 ng-submit 中。将工厂绑定(bind)到 $scope
时不会。
您应该意识到这一点,但是一旦您将 ()
放在函数后面,就意味着您执行了它。如果您只是想绑定(bind)某个函数但稍后调用它,您只需执行 $scope.testFactory = testFactory.setRoot
,然后使用 ng-submit="testFactory()"
直接。
您的函数最大的问题是您尝试从工厂内部设置 $rootScope
,这是行不通的。您也不能从工厂内部设置$scope
。因此,您必须返回一个值,然后将其绑定(bind)到 Controller 中的 $rootScope
或 $scope
。
关于javascript - ng-submit 使用工厂函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32530483/