ocLazyLoad - 一个控制器调用另一个

时间:2014-11-12 04:46:40

标签: angularjs lazy-loading

在我的header.html中,我有2个控制器,标头控制器和语言控制器。

这是我的HeaderCtrl:

define(
[
    'angular', 'layout/layout.module','languages/languages.module',    
    'languages/controllers/LanguagesCtrl'
],
function (angular) {
'use strict';

angular.module('app.layout').controller('HeaderCtrl', HeaderCtrl);

/* @ngInject */
function HeaderCtrl() {
    var header = this;
    header.pageTitle = 'Response coming from HeaderCtrl';
}

});

我的状态:(通过svc调用json文件)

 "header": {
              "templateUrl": "app/layout/views/tpl.header.html",
              "controller": "HeaderCtrl as header",
              "resolve": {},
              "data": {
                "moduleName": "app.layout",
                "moduleFiles": [
                  "app/languages/controllers/HeaderCtrl.js"
                ]
              }

问题:

如何将范围从LanguagesCtrl传递到HeaderController,以便我的html同时具有HeaderCtrl& LanguagesCtrl范围,不需要点击事件? [由于HeaderController的定义,LanguageController正在加载,我只是无法与它通信。]

1 个答案:

答案 0 :(得分:1)

我有一个警告的解决方案:

如果你去angularjs-requirejs-lazy-controllers的github,有一个 mbLazyController 指令来完成这项工作。

警告:

尽可能接近/尝试过,你不能拥有"控制器作为"场景,所以你必须使用$ scope:

  <div mb-lazy-controller="languages/controllers/LanguagesCtrl">
  {{message}}     
  </div>

但它确实可以完成这项工作并与AngularJs 1.3.2一起使用。