2017-07-14 132 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