2013-06-20 10 views
22

Sono un principiante di angularjs. Sto costruendo un'applicazione in cui la mia home page avrà un elenco di post. Ho pensato di usare angularjs per il bind a due vie solo per quella pagina. Ho iniziato con una pagina di esempio, ma ho riscontrato problemi qui.L'argomento Angularjs non è una funzione ottenuta stringa

La mia pagina di esempio. Sto usando ng-app per questo div in quanto non voglio angularjs per interagire con altri aspetti della pagina.

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

Ho un file app.js che ha

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

e un file postcontroller.js con

(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); 

quando carico la mia home page. Sto ottenendo

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

Cosa mi manca qui. Per favore aiutami dato che sono totalmente confuso. Sono nuovo di angularjs e anche in javascript.

risposta

47

Il problema è nel modo in cui si dichiara il controller. Si dovrebbe fare come illustrato di seguito:

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

Si prega di notare che il secondo argomento è un array sia con una stringa $scope e una funzione come elementi di matrice. Questa è una sintassi corretta da utilizzare per scrivere un codice sicuro per la minificazione.

+0

ha funzionato bene dopo queste modifiche. Puoi indicarmi qualche risorsa che spiega perché questa sintassi funzioni con la minimizzazione? Grazie per l'aiuto. –

+1

@ R.A.J dai un'occhiata alla sezione "Annotazione delle dipendenze" in http://docs.angularjs.org/guide/di –

+0

Funzione di manomissione dei minisiti e nomi degli argomenti ma non dei letterali String. –

Problemi correlati