2013-08-05 40 views
3

所以我已经知道当我看到答案的时候我会感到非常愚蠢,但是我正在通过egghead.io上的AngularJS教程进行工作。当我这样做:AngularJS不承认控制器

<!DOCTYPE html> 
<html> 
    <head> 
     <title>AngularJS Tutorials</title> 
     <link rel="stylesheet" href="/foundation/stylesheets/foundation.min.css"> 
     <script src="js/main.js"></script> 
     <script src="lib/angular/angular.js"></script> 
    </body> 
    </head> 
    <body> 
     <div ng-app="myApp"> 

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

      <div ng-controller="SecondCtrl"> 
       <input type="text" ng-model="data.message"> 
       <h1>{{ data.message }}</h1> 
      </div> 
     </div> 
</html> 

与我的JavaScript文件作为这样(名为main.js):

var myApp = angular.module('myApp', []); 
myApp.factory('Data', function() { 
    return { message: "I'm data from a service"} 
}) 

function FirstCtrl($scope, Data) { 
    $scope.data = Data; 
} 

function SecondCtrl($scope, Data) { 
    $scope.data = Data; 
} 

{{ data.message }}不被识别为一个AngularJS结合(即在页面它显示了如
{{ data.message }}而不是"I'm data from a service")。但是,如果我将所有JS代码直接放入HTML中,则它可以正常工作。我错过了一个参考或其他东西?似乎没有找到这个地方,可能是因为它非常基础。

+0

正如我所说...我觉得D-U-M-B。 –

回答

2

后我要去JUMP THE GUN并建议您切换这些

<script src="js/main.js"></script> 
<script src="lib/angular/angular.js"></script> 

<script src="lib/angular/angular.js"></script> 
<script src="js/main.js"></script> 

如果这工作那么这是因为在此之前,你试图使用的角度,当它不是事件时加载。


提示


现在,当我第一次使用javascript开始,这些类的使用在我身上发生了很多事情。最好的办法是学习如何使用console它会告诉你在控制台沿线cannot read property 'module' of undefined,这意味着angularundefined,因此没有加载。

+0

那么,凭借速度,我会接受你的......当它让我......是的,意识到我是一个白痴。感谢您的高举。 –

+0

好的,很酷。在答案中增加了一条提示。 – iConnor

+0

这是一个很好的观点。绝对没有使用控制台,因为我应该。 –

1

装入控制器前角,后不字里行间

1

开关:

<script src="js/main.js"></script> 
<script src="lib/angular/angular.js"></script> 

你需要运行main.js角加载