2016-03-17 78 views
1

最近,我開始學習AngularJS並決定創建我的第一個AngularJS項目。 但是,我在使用html代碼初始化控制器時遇到了這個問題。AngularJS「控制器爲」語法錯誤

我收到以下錯誤:

angular.min.js:60 Error: Argument 'MainCTRL as ctrl' is not a function, got undefined 
at qa (angular.min.js:16) 
at ra (angular.min.js:16) 
at angular.min.js:50 
at angular.min.js:42 
at m (angular.min.js:6) 
at j (angular.min.js:42) 
at e (angular.min.js:38) 
at e (angular.min.js:38) 
at e (angular.min.js:38) 
at angular.min.js:37(anonymous function) @ angular.min.js:60(anonymous function) @ angular.min.js:51e.$apply @ angular.min.js:86(anonymous function) @ angular.min.js:15d @ angular.min.js:26qb @ angular.min.js:15kc @ angular.min.js:15(anonymous function) @ angular.min.js:158a @ angular.min.js:114(anonymous function) @ angular.min.js:23m @ angular.min.js:6c @ angular.min.js:22 

我不想在這個時候使用$的範圍,並希望與控制器的別名這個任務繼續進行。隨着$範圍是工作正常的,但是,我對這個問題的解決方案的情況下,非常有興趣使用「控制器」形式的

它的代碼,其中存在錯誤的一部分:

<html lang="en" ng-app="blog"> 
<head> 
<script src="template/assets/js/angular/angular.js"></script> 
<script src="template/assets/js/controllers/app.js"></script> 
<link rel="stylesheet" href="template/assets/template.css"> 
</head> 
<main ng-controller="MainCTRL as ctrl"> 
    <div class="stage"> 
     <div class="prog-lang-container left"> 
     <div class="prog-lang-container-inner"> 
      <img class="prog-lang-img" src="#" alt="#"> 
      <span class="prog-lang-name"> 
       {{ctrl.name}} 
      </span> 
     </div> 
     </div> 
     ... 
    </div> 
</main> 
... 
</html> 

這是我的app.js文件,這是非常簡單剛纔:

(function(){ 
    var app = angular.module('blog',[]); 
    app.controller("MainCTRL", function(){ 
     this.name = "TEST"; 
    }) 
})() 

可能是我想的東西在代碼

+0

角度js是哪個版本? –

+0

@Neel,我正在使用版本1.5.0 – ShiiRochi

+0

這看起來很正確。你是否可能在你的HTML中有第二個'ng-app'? – Lex

回答

1

我不完全理解爲什麼這個問題會使用英里時發生nified版本,其中一個解決方案在Lex上面評論中說過,它是使用非縮小的AngularJS文件。 謝謝大家,誰幫了忙。

答:

Try referencing the non-minified version of Angular to see if you get a better error message. – Lex

+0

我明白,但它不是一個真正的答案。在生產中,您會希望使用縮小版本,因此使用非縮小版本解決此問題令人不安。 – Lex

+0

@Lex,當然,你是對的,但是,在縮小版本中,我們可以使用$ scope。它工作正常,但我認爲,從非分鐘到分鐘,我不得不將所有代碼從「controller as」重新寫入$ scope方法 – ShiiRochi

+0

'Controller as'語法很漂亮無處不在的。也許你的縮小版本搞砸了 - 你從哪裏得到它的?你在使用CDN嗎? – Lex

0

我已經複製所有的代碼,並與CDN都嘗試過了,下載的精縮1.5.0 AngularJS文件的版本和它的所有工作。所以,這個問題可能在其他代碼中沒有包含(...)或縮小文件。嘗試使用cdn來查看它是否有所作爲。

+0

好吧,謝謝,在創建這個問題之前,我創建了一個項目的副本,並從頭開始刪除所有代碼,並且沒有錯誤,但是當試圖在原始時做到這一點 - 實現了錯誤。 在這個時候,我開始使用$範圍,我能說什麼是我喜歡「控制器爲」和$範圍,但與$範圍我不得不寫一段代碼 張貼一段HTML代碼我只有腳本與靜態HTML,所以...這是我當時使用Angular的唯一地方,不像現在)) – ShiiRochi