angularjs - 在工厂方法中调用 Controller

标签 angularjs factory

目前我有一个这样的工厂方法:

            open_model: function(som_id){
                var modelSettings = $aside({
                    controller: // a very big controller code
                    size: 'sm',
                    placement: 'right',
                    templateUrl: 'views/id/modal.html',
                    resolve: {
                        modal_data: function(){
                            return area_id;
                        }
                    }
                });
            },

我想将 Controller 从这个方法中分离出来,并通过名称调用它。目前在 Controller 部分有超过 100 行代码,因此它使工厂变脏。那么有没有一种方法可以在其他地方定义 Controller ,并通过名称调用 Controller 而不是编写代码。

最佳答案

除了@nikjohn 的回答之外,您还可以创建一个单独的 Angular Controller 并在您的 modelSettings 中引用它。由于您已经说过您的模态 Controller 代码超过 100 行,这甚至可能是更好的解决方案。

angular.module('myApp').controller('ModalInstanceCtrl', ['$scope', 'modal_data', function($scope, modal_data) {
    // modal controller code goes here
}]);

// and refer it in your factory method
open_model: function(som_id){
    var modelSettings = $aside({
        controller: 'ModalInstanceCtrl'
        size: 'sm',
        placement: 'right',
        templateUrl: 'views/id/modal.html',
        resolve: {
             modal_data: function(){
                  return area_id;
             }
        }
    });
}

关于angularjs - 在工厂方法中调用 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40859057/

相关文章:

design-patterns - 工厂、抽象工厂和工厂方法

javascript - 在位于单独文件中的 $routeProvider 路由中定义 Controller

javascript - 对绑定(bind)元素的 Angular 访问

javascript - MVC 模型中如何通知用户错误?

c++ - 将参数传递给命令模式

design-patterns - 工厂如何知道要创建哪种类型的对象?

javascript - 如何在动态生成的 input-angularjs 中显示动态 Json 数据?

angularjs - 带有延迟 promise 的 Angular/Jasmine 测试

D 语言 : Return freshly created associative array

angularjs - Angular JS : Async factory call issue