2017-07-14 192 views
1

我在角度和節點新的,所以我有一些問題。

我沒有得到什麼$範圍做準確,我不知道如何使用它。

當我寫這樣的代碼,它不工作

angular.module('app', []) 
.controller('settingsCtrl', ['$scope', 
    function($scope) { 

     //define the date format 
     $scope.date= new Date(); 
     $scope.h = date.getHours(); 
     $scope.m = date.getMinutes(); 

     if(6 < $scope.h < 14 && 0 < $scope.m < 60){ 
      $scope.text='Ok'; 
     } 
    }]); 

但是,當我寫的那樣,它的工作原理。

angular.module('app', []) 
.controller('settingsCtrl', ['$scope', 
    function($scope) { 

     //define the date format 
     var date= new Date(); 
     $scope.h = date.getHours(); 
     $scope.m = date.getMinutes(); 

     if(6 < $scope.h < 14 && 0 < $scope.m < 60){ 
      $scope.text='Ok'; 
     } 
    }]); 

這是HTML代碼

<div data-ng-controller="settingsCtrl"> 
 
    <div class="card"> 
 
     <div class="card-header "> 
 
      <p>{{date | date}}</p> 
 
     </div> 
 
     <div class="card-block"> 
 
      <p>{{h}}</p> 
 
      <p>{{m}}</p> 
 
      <p>{{text}}</p> 
 
     </div> 
 
    </div> 
 
</div>

誰能給我解釋什麼是兩個代碼以及如何熟悉$範圍之間的區別?

感謝

+0

[你可以簡單地閱讀文檔...](https://docs.angularjs.org/guide/scope) –

+0

你有過工作[官方教程](https://docs.angularjs.org/tutorial)?現在大多數人建議不要使用'$ scope'來支持'controllerAs'語法。另外,如果你有任何選擇,我真的建議學習一個比Angular 1更新的框架(Angular 4,React和Vue都是不錯的選擇)。 –

+0

「它沒有工作」究竟意味着什麼?任何錯誤?登錄?你能更具體些嗎? – lealceldeiro

回答

2

在第一個代碼塊中的錯誤是,您試圖訪問一個undefined對象的功能getHoursdate,而不是$scope(您創建了var date)。

你應該嘗試$scope.date這樣的:

angular.module('app', []) 
.controller('settingsCtrl', ['$scope', 
    function($scope) { 

     //define the date format 
     $scope.date= new Date(); 
     $scope.h = $scope.date.getHours(); // notice here the change to $scope.date.getHours() 
     $scope.m = $scope.date.getMinutes(); //idem 

     if(6 < $scope.h < 14 && 0 < $scope.m < 60){ 
      $scope.text='Ok'; 
     } 
    }]); 
+0

@Vivz我提出的意見之前,我意識到發生了什麼錯誤,我不是小偷,我不喜歡與其他盜竊。我對不起你這樣想和做了這樣的評論。我的回答是有效的爲你的。很多時候,同樣發生了對我的回答,我從來沒有抱怨和像你這樣得罪。你感到羞恥!這不是在這個Q&A網站 – lealceldeiro

+0

我並不意味着沒有進攻的精神。我對他說抱歉這一點,但仍是信貸應該經常去誰第一個回答正確的人。我apoligize的評論,我把它收回。但是,如果你知道答案是和已經看到有一個答案,這意味着同樣的事情,然後有再次回答沒有意義的。 – Vivz

+0

我同意你的看法,但在OP標礦爲「正確的」,這並不意味着你不能一直選擇爲「正確」的了。也許如果運會已經有足夠的代表,他本來會投票給你的,不管怎麼說,道歉接受,你有我的贊成。 – lealceldeiro

2

你的第一個代碼沒有工作,因爲在你的第一個代碼,沒有對象的日期。第一個代碼中的日期是$scope的一個實例。代替改變它這樣

angular.module('app', []) 
.controller('settingsCtrl', ['$scope', 
    function($scope) { 

     //define the date format 
     $scope.date= new Date(); 
     $scope.h = $scope.date.getHours(); 
     $scope.m = $scope.date.getMinutes(); 

     if(6 < $scope.h < 14 && 0 < $scope.m < 60){ 
      $scope.text='Ok'; 
     } 
    }]); 

在AngularJS,$scope是應用對象(應用變量和函數的所有者)。它基本上是應用程序控制器和視圖之間的粘合劑。

欲瞭解更多信息:https://docs.angularjs.org/guide/scope