从另一个控制器调用一个控制器

时间:2015-06-22 08:22:31

标签: angularjs

我有2个控制器,我从第一个控制器的功能中调用第二个控制器

$scope.open = function () {
    var modal = $modal.open({
        templateUrl: 'views/view1.html',
        controller: 'controller2',
        // other parameters
    });
    /* some code */
}

两个控制器都在同一个文件夹中。有类似的问题,但我想知道是否有任何方法可以在不使用服务的情况下调用第二个控制器。

编辑 -

这是我得到的错误 -

错误:[ng:areq]参数'controller2'不是函数,未定义 http://errors.angularjs.org/1.3.16/ng/areq?p0=controller2&p1=not%20a%20function%2C%20got%20undefined     在REGEX_STRING_REGEXP(angular.js:63)     在assertArg(angular.js:1590)     在assertArgFn(angular.js:1600)     在angular.js:8502     at resolveSuccess(ui-bootstrap-tpls.js:2377)     at processQueue(angular.js:13292)     在angular.js:13308     在Scope。$ get.Scope。$ eval(angular.js:14547)     在Scope。$ get.Scope。$ digest(angular.js:14363)     在Scope。$ get.Scope。$ apply(angular.js:14652)

1 个答案:

答案 0 :(得分:0)

您通常可以在模态打开功能中使用控制器,但控制器2必须位于controller1所属的同一模块中:

angular.module('myModule').controller('controller1', ['$scope', myModuleController1]); 
angular.module('myModule').controller('controller2', ['$scope', myModuleController2]);

如果您的控制器属于单独的模块myModule1,myModule2:

,您必须在app.js文件中创建依赖项。
angular.module('myModule', [myModule2]);

另外,请确保将两个控制器定义为index.html

中的文件
    <script src="../controller1file.js"></script>
<script src="../controller2file.js"></script>

完成所有这些步骤后,您将能够在controller1代码中以下列方式使用模态:

function OpenModalsService($modal) {

var OpenModalsService = {};

var _openmodal = function () {

    var modalInstance = $modal.open({
        templateUrl: 'Modals.Views/view.html',
        controller: 'controller2',
        size: 50
    });

    modalInstance.result.then(function (var) {

       var = 'something';
    });
};

希望它会对你有所帮助!