为什么这个Angular控制器抛出“错误:未知提供者:nProvider< - n”?

时间:2013-03-30 16:04:58

标签: javascript angularjs

jsFiddle of the code

<div ng-app="">
    <div ng-controller="FirstCtrl">
        <input type="text" ng-model="data.message" />
        {{data.message + " world"}}
    </div>
</div>

function FirstCtrl($scope) {
    $scope.data = {
        message: "Hello"
    };
}

我刚刚开始使用Egghead.io上的视频学习Angular。接下来我被卡在了2nd video where John discusses controllers上。它适用于他的视频,在我的机器上失败。

代码是如此基本我无法弄清楚是什么引发了这个错误:

> Error: Unknown provider: nProvider <- n
>     at Error (<anonymous>)
>     at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js:29:36
>     at Object.c [as get] (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js:26:310)
>     at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js:29:121
>     at c (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js:26:310)
>     at d (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js:26:444)
>     at Object.instantiate (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js:28:80)
>     at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js:51:512
>     at http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js:43:67
>     at n (http://cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.min.js:7:43)

如果我使用谷歌CDN也会抛出此错误(从错误中,我想也许这是cdn的错误。)

3 个答案:

答案 0 :(得分:30)

原来问题是我的脚本被缩小了,而minifier正在改变$ scope变量的名称。 Angular.js文档确实提到了how to minify Angular code

答案 1 :(得分:2)

就你的小提琴而言,如果你将AngularJS用法从'onLoad'更改为'No wrap-in'&lt; head&gt;'或'没有换行&lt; body&gt;'它会正常工作。

答案 2 :(得分:2)

只有小提琴演示中的问题是设置代码才能在加载处理程序中运行。

Anguar在尝试解析DOM时无法找到您的控制器功能

工作版,只需更改左上角的onload

即可

http://jsfiddle.net/TCT8n/3/