2013-06-27 89 views
4

這裏是我的html和角js代碼在角JS DIV使用的應用程序名稱不工作

<html> 
<head> 
    <title></title> 
    <script src="Scripts/angular.min.js" type="text/javascript"></script> 
    <script type="text/javascript" language="javascript"> 
     function DemoController($scope) { 
      $scope.user = { 
       dateOfBirth: new Date(1970, 0, 1) 
      } 
     } 
    </script> 
</head> 
<body> 
    <div ng-app="demo" ng-controller="DemoController"> 
     Date Of Birth: 
     <my-datepicker type="text" ng-model="user.dateOfBirth" /> 
     <br> 
     Current user's date of birth: <span id="dateOfBirthDisplay">{{user.dateOfBirth}}</span> 
    </div> 
</body> 
</html> 

它不工作,給輸出

Date Of Birth: 
    Current user's date of birth: {{user.dateOfBirth}} 

但是,如果我從刪除="demo"ng-app="demo"在它的工作原理...

回答

7

當您爲ng-app指令指定一個名稱,你基本上創建一個該名稱的模塊。在這個模塊中,你將不得不定義你的指令,服務,過濾器和配置。

就你而言,當你分配名稱「demo」時,你創建了一個名爲「demo」的模塊。功能DemoController現在不再是該模塊的一部分。

要使用此功能,並指定一個模塊安裝到您的應用程序,你需要使用定義控制器的方式如下:

var app = angular.module("demo", []); 

app.controller('DemoController', [function() { 
    //The body of demo controller 
}]); 

這樣,應用程序就知道模塊的控制器需要爲將要關聯哪些相應視圖的範圍。

編輯:The ng-app directive reference

+0

thnks ...這奏效了 – iJade

0

ng-app屬性defines應用程序的module name的值。在你的情況下,這是「演示」。雖然您尚未在模塊「demo」中聲明DemoController,但使用angular.module調用,它在ng-app html中不可見,在「demo」模塊的範圍內執行。

什麼會爲ng-app="demo"工作是:

<script type="text/javascript" language="javascript"> 
    angular.module('demo', []).controller('DemoController', function ($scope) { 
     $scope.user = { 
      dateOfBirth: new Date(1970, 0, 1) 
     } 
    }); 
</script> 
1

我的解決辦法工作,試試這個:http://plnkr.co/edit/zwOKitT8wznO17yZfz15?p=preview

<body ng-app=""> 
    <div ng-controller="DemoController"> 
     Date Of Birth: 
     <br> 
     Current user's date of birth: <span id="dateOfBirthDisplay"><span ng-bind="user.dateOfBirth"></span></span> 
    </div> 
</body> 
+1

如果有沒有價值了'NG -app'指令,你可以簡單地使用'ng-app'而不用'ng-app =「」'代碼...... – callmekatootie