javascript - ng-submit 使用工厂函数?

标签 javascript angularjs factory

我有一个带有 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/

相关文章:

javascript - Vue,如何在 JSX 渲染的 Prop 中传递函数?

javascript - 在textarea中隐藏标签但要实现标签的效果

angularjs - 在 ng-enter 之前类未绑定(bind)到 ui-view

javascript - setInterval() 在 Android 中的 window.open() 之后不起作用

python - defaultdict constant_factory 的行为不符合预期

java - 通过构造函数进行依赖注入(inject)中的循环依赖

javascript - 如何在javascript中更改数组对象的键?

javascript点击事件只有在javascript完全驱动之后才会发生

ajax - 如何在 Angular 中捕获 http 错误响应

Java:类在包中找不到彼此(工厂设计模式)