从另一个Controller设置Controller的Init参数

时间:2015-07-27 23:22:33

标签: angularjs angularjs-service

我有一个名为qService的服务,它包含一个名为getQ(id)的方法。我的index.html类似于以下内容:

<div ng-app="app">
    <div ng-controller="qController"></div>
    <div ng-controller="dController" ng-init="init(q)">/div>
</div>
来自qController.js的

我打电话:

qService.getQ(id).then(onQ);

var onQ = function(results) {
    // initialize dController from here?
};

我的问题是,如何使用服务的结果初始化dController?我是Angular的新手,但似乎我需要某种方式'重新绑定'dController?对不起,如果我没有正确使用术语。

1 个答案:

答案 0 :(得分:0)

检查工作演示的控制台:JSFiddle

使用ng-if异步启动控制器。

  

请注意,使用ngIf删除元素时,其范围将被销毁,并且在还原元素时会创建新范围。在ngIf中创建的作用域使用原型继承继承其父作用域。

出于演示目的,我使用$interval禁用和启用控制器:

angular.module('Joy', [])
    .controller('qController', ['$rootScope', '$scope', '$interval', function ($rootScope, $scope, $interval) {
    console.log('From qController');
    $rootScope.inited = false;

    $interval(function () {
        $rootScope.inited = true;
    }, 3000);
    $interval(function () {
        $rootScope.inited = false;
    }, 2000);
}]).controller('dController', ['$scope', function ($scope) {
    console.log('From dController');
}]);

HTML:

<div ng-app="Joy">
    <div ng-controller="qController"></div>
    <div ng-if="inited" ng-controller="dController" ng-init="init(q)"></div>
</div>