8

Mam been told, który powinienem używać składni app.controller, w celu wsparcia minifikacji.

Przepisywanie próbki (samouczek) przykładem i stwierdziliśmy, że nie mogłem zmusić go do pracy:

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 --> 

Co muszę zmienić?

+0

O ile wiem, można użyć drugą wersję nawet do minimalizowania, ze względu na linii $ inject - który mówi angularjs prawidłowa bez zmian nazwy dwóch parametrów. – flaschenpost

+0

To działa dla mnie. Jaki masz błąd? – DanEEStar

Odpowiedz

13

Sposób Zrobiłem mój układ kontrolera jest.

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

Jak to się nazywa w widoku? – user2283066

+0

{{Telefony}} jest poprawny, ponieważ kontroler umieścił dane w $ scope.phones –

+0

Powiedziałeś, że działa drugi format, więc musi to być sposób, w jaki rozmieściłeś moduły. –