我有一个名为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?对不起,如果我没有正确使用术语。
答案 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>