好的,我有以下角度视图:
<div ng-controller="myController">
{{helloWorld}}
<br /><br />
<button type='button' ng-click='showModal();'>Click me</button>
</div>
以下JS代码:
var testApp = angular.module('testApp', ['ui.bootstrap']);
var myController = function($scope, $modal){
$scope.helloWorld = 'Hello World';
$scope.showModal = function(){
var modalInstance = $modal.open({
template: '{{something}} <br/> <button type="button" ng-click="updateSomething()">Click me now</button>',
controller: modalController,
resolve: {
helloWorld: function () {
return $scope.helloWorld;
},
}
});
}
}
myController.$inject = ['$scope', '$modal'];
testApp.controller('myController', myController);
var modalController = function($scope, $modalInstance, helloWorld){
$scope.something = 'Yada yada yada';
$scope.updateSomething = function () {
$scope.something = helloWorld;
};
}
JSFiddle是here。
当所有内容都捆绑并缩小时, myController 效果很好,因为我创建了一个注释 testApp 关于 myController ,并调用了 testApp 的控制器方法。
但是,我坚持使用 modalController ,如何将其正确连接到Angular的DI容器?
我知道它有一个名为$ inject的属性。我尝试为 modalController 创建一个注释,就像我为 myController 做的那样,然后将 helloWorld 推送到该数组,如图所示{{3 },in this updated fiddle。
所以我的问题是,当某些控制器依赖项由angular提供,而其他控件依赖项是通过resolve方法提供的时候,如何告诉Angular的DI容器所有这些依赖项,所以一切都会按预期工作何时缩小?
由于
答案 0 :(得分:2)
问题在于:
modalController.$inject.push($scope.helloWorld);
这会将helloWorld
的值添加到依赖项中,但您需要helloWorld
本身。因此,删除该行只需将helloWorld
添加到其他依赖项:
modalController.$inject = ['$scope','$modalInstance', 'helloWorld'];