8

Ho il been told che dovrei usare la sintassi app.controller, per supportare la minificazione.

Riscrivere l'esempio del campione (tutorial), e ho scoperto che non ho potuto farlo funzionare:

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

cosa ho bisogno di cambiare?

+0

Per quanto ne so è possibile utilizzare la seconda versione, anche per ridurre al minimo, a causa della linea $ Inject - che racconta angular.js il corretto invariato nomi dei due parametri. – flaschenpost

+0

Funziona per me. Qual è l'errore che hai ottenuto? – DanEEStar

risposta

13

Il modo in cui ho fatto il mio layout di controllo è:.

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

Come fare riferimento alla vista? – user2283066

+0

{{telefoni}} è corretto, poiché il controller inserisce i dati in $ scope.phones –

+0

Hai detto che il secondo formato funziona, quindi deve essere il modo in cui hai disposto i moduli. –

Problemi correlati