8

Ich habe been told, dass ich die app.controller Syntax verwenden sollte, um die Verkleinerung zu unterstützen.

Umschreiben der Probe (Tutorial) Beispiel, und ich fand, dass ich es nicht zur Arbeit gehen konnte:

use 'strict'; 

/* Minifiable solution; which doesn't work */ 
var app = angular.module('myApp', ['ngGrid']); 

// phones.json: http://angular.github.io/angular-phonecat/step-5/app/phones/phones.json 

app.controller('PhoneListCtrl', ['$scope', '$http', function ($scope, $http) { 
    $http.get('phones/phones.json').success(function (data) { 
     $scope.phones = data; 
    }); 

    $scope.orderProp = 'age'; 
}]); 
/* Alternate [textbook] solution; which works */ 
function PhoneListCtrl($scope, $http) { 

    $http.get('phones/phones.json').success(function (data) { 
     $scope.phones = data; 
    }); 

    $scope.orderProp = 'age'; 
} 

PhoneListCtrl.$inject = ['$scope', '$http']; 
<body ng-app="myApp" ng-controller="PhoneListCtrl"> 
    {{phones | json}} 
</body> <!-- Outputs just an echo of the above line, rather than content --> 

Was muss ich ändern müssen?

+0

Soweit ich weiß, Sie die zweite Version auch zur Minimierung verwenden kann, weil der Linie $ inject - die Angularjs der richtigen unverändert erzählt Namen der beiden Parameter. – flaschenpost

+0

Es funktioniert für mich. Was ist der Fehler, den du hast? – DanEEStar

Antwort

13

Die Art, wie ich mein Controller-Layout haben ist.

var app = angular.module('myApp', ['controllers', 'otherDependencies']); 
var controllers = angular.module('controllers', []); 
controllers.controller('PhoneListCtrl', ['$scope', '$http', function ($scope, $http) { 
    // your code 
    $http.get('phones/phones.json').success(function (data) { 
    $scope.phones = data; 
    }); 
}]); 
+0

Wie Sie es in der Ansicht verweisen? – user2283066

+0

{{phones}} ist korrekt, da der Controller Daten in $ scope.phones –

+0

legte Sie sagten, das 2. Format funktioniert, so muss es sein, wie Sie die Module ausgelegt. –