2013-06-20 12 views
22

Jestem początkującym dla angularjs. Buduję aplikację, w której moja strona główna będzie zawierała listę wpisów. Pomyślałem o użyciu angularjs dla wiązania dwukierunkowego tylko dla tej strony. Zacząłem od przykładowej strony, ale natrafiłem tutaj na same problemy.Argument Angularjs nie jest funkcją ma ciąg

Moja strona próbna. Używam ng-app tylko dla tego div, ponieważ nie chcę, aby angularjs wchodził w interakcję z innymi aspektami strony.

<div ng-app="posts"> 
    <ul class="post_list" ng-controller="PostController"> 
    <li ng-repeat="post in posts"> 
    {{post.title}} 
    {{post.description}} 
    </li> 
    </ul> 
</div> 

mam app.js plik, który ma

var app = angular.module('posts', []); 

i plik postcontroller.js z

(function(angular, app) { 
    // Define the Controller as the constructor function. 
    console.log(app); 
    console.log(angular); 
    app.controller("PostController",["$scope"], function($scope) { 
    $scope.posts = [ 
     {"title":"asdf", "description":"describe"}, 
     {"title":"second one", "description":"second describe"}, 
    ]; 
    }); 
})(angular, app); 

Kiedy załadować stronę główną. Dostaję

Error: argument "PostController" is not a function. got string [googlecdn path]angular.min.js:16

Czego tu mi brakuje. Pomóżcie mi, ponieważ jestem całkowicie zdezorientowany. Jestem nowy w angularjs i również w javascript.

Odpowiedz

47

Problem polega na tym, że deklarujesz swój kontroler. Należy zrobić jak pokazano poniżej:

app.controller("PostController",["$scope", function($scope) { 
    $scope.posts = [ 
     {"title":"asdf", "description":"describe"}, 
     {"title":"second one", "description":"second describe"}, 
    ]; 
    }]); 

Proszę zauważyć, że drugi argument jest tablicą z zarówno $scope sznurka i funkcji jako elementy tablicy za. Jest to poprawna składnia używana do pisania kodu bezpiecznego do minifikacji.

+0

działało dobrze po tych zmianach. Czy możesz wskazać mi jakiś zasób, który wyjaśnia, dlaczego ta składnia działa z minimalizacją? Dzięki za pomoc. –

+1

@ R.A.J zapoznaj się z sekcją "Adnotacja zależności" w http://docs.angularjs.org/guide/di –

+0

Funkcja mangles i nazwy argumentów dla funkcji Min., Ale nie z literałów String. –