AngularJS中Factory中对象的长度

时间:2016-07-05 05:06:55

标签: javascript angularjs

我在Service.js有10名学生及其排名数据。我希望用户选择排名范围,然后我会根据他们的排名范围向他们显示相关的学生信息。例如,如果他们从等级2到等级5中选择,则他们只会看到等级2到5的学生信息。

由于我的数据库中只有10名学生,我想在输入中将最低等级限制为10。因此,我需要Service.js(后端)中的数据(对象)的长度返回到html(Front)。

代码已更新。

我的service.js位于以下位置:

(function(angular){
angular.module('Service', [])
.factory('ServiceFun', function(){
  var Objects = [
    {rank: 1,  name: 'id1'},
    {rank: 2,  name: 'id2'},
    {rank: 3,  name: 'id3'},];     
 var len = function (){
    len = 0;
    for (var i in Objects){
    if (Objects.hasOwnProperty(i)){
        len++;}
    };
    return len; 
 };
 return{Objects: Objects,
       len : len,};
});
})(window.angular)

我的Controller.js位于以下位置:

(function(angular) {
angular.module('PModule', ['Service'])
.controller('BetweenController', ['ServiceFun', function(ServiceFun) {
  this.high = 3;
  this.low = 1;
  this.Objects = ServiceFun.Objects;
  this.count =  function count(){
      return ServiceFun.len;       
  }]);
})(window.angular);

我调用Controller的html主要部分如下:

<body data-ng-app="PModule">
<div data-ng-controller="BetweenController as value">  
<div>  
<span>the highest ranking which you expected</span>
<input type="number" min ="1" data-ng-model="value.low" required>
<br/>
<span>the lowest ranking which you expected</span>
<input type="number" min ="1" max = "value.count()" data-ng-model="value.high"   required>
<div><h3>Show selected table</h3>
<table class="ranking">
<tr>
  <th>Rank</th>
  <th>Number</th>
</tr>
<tr data-ng-repeat="c in value.Objects" data-ng-if=" c.rank > value.low-1 && c.rank < value.high+1">
  <td>{{c.rank}}</td>
  <td>{{c.name}}</td>
</tr>
</table>
</div>      

</div>
</div>
</body>

我之前的问题文字在这里:

我使用Angular JS要求用户输入最低等级和最高等级,然后我将向他们显示所选范围内的相关数据。当然,允许输入的最低等级数应受我数据库中最低等级(数据库长度)的限制。这就是问题所在!

我在服务中硬编码了一些数据(对象/数组)。我想将服务中此对象的长度传递给我的控制器。然后在我的View(html)中,我可以通过从Controller获取它来将此信息用作我的最大输入数字(最低排名数)。但它没有用。

我尝试了另一种更简单的方式,例如&#34; this.count = ServiceFun.Objects.length&#34;在控制器中,但它也不起作用。

在使用$ scope之前,我读过有人回答了类似的问题。$ watch;但在我的情况下,我没有$ scope和数据在服务中。在我的AngularJS 1.5.7版本中,我也没有找到$ watch。

1 个答案:

答案 0 :(得分:0)

(function(angular) {
angular.module('PModule', ['Service'])
.controller('BetweenController', ['ServiceFun', function(ServiceFun) {
  this.high = 3;
  this.low = 1;
  this.Objects = ServiceFun.Objects;
  this.count = ServiceFun.len;       
  }]);
})(window.angular);

对象不是对象