当它的依赖性是由Angular和一个resolve方法提供的对象的混合时,我应该如何注释一个控制器在缩小时工作?

时间:2014-05-15 12:33:12

标签: angularjs dependency-injection bundling-and-minification

好的,我有以下角度视图:

<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容器所有这些依赖项,所以一切都会按预期工作何时缩小?

由于

1 个答案:

答案 0 :(得分:2)

问题在于:

modalController.$inject.push($scope.helloWorld);

这会将helloWorld添加到依赖项中,但您需要helloWorld本身。因此,删除该行只需将helloWorld添加到其他依赖项:

modalController.$inject = ['$scope','$modalInstance', 'helloWorld'];