Как трябва да коментирам контролер, за да работи, когато е минимизиран, когато неговите зависимости са смесица от обекти, предоставени от Angular и от метод за разрешаване?

Добре, така че имам следния ъглов изглед:

<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 е тук.

Когато всичко е групирано и минимизирано, myController работи чудесно, защото създадох анотация, казваща на testApp за myController, и я нарекох testApp< /strong> метод на контролера.

Въпреки това съм заседнал на modalController, как да свържа това правилно към DI контейнера на Angular?

Знам, че има свойство, наречено $inject. Опитах се да създам анотация за modalController по същия начин, по който направих за myController и след това натиснах helloWorld в този масив, както е показано в тази актуализирана цигулка, но получавам грешка за неизвестен доставчик.

Така че въпросът ми е, когато някои от зависимостите на контролера се предоставят от angular, а други се предоставят чрез метод за разрешаване, как да кажете на DI контейнера на Angular за всички тях, така че всичко да работи както се очаква, когато бъде минимизирано?

Благодаря


person JMK    schedule 15.05.2014    source източник


Отговори (1)


Проблемът е тук:

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

Това добавя стойността на helloWorld към зависимостите, но вие искате самото helloWorld. Така че изтрийте този ред, просто добавете helloWorld към другите зависимости:

modalController.$inject = ['$scope','$modalInstance', 'helloWorld'];
person a better oliver    schedule 15.05.2014