2016-03-17 51 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