Angularjs限制不能在ng-repeat中工作

时间:2015-07-11 09:53:45

标签: javascript angularjs

我正在从php mysql中检索搜索查询到我的angularjs应用程序中。结果采用以下格式:enter image description here

然后,此对象将显示在我的angularjs应用程序中,并使用ng-repeat显示。问题是我想将结果限制为10。但由于某种原因,它不起作用。我找到了一个可能的解决方案limiTo not working。这里指出LimitTo如果是对象中的对象则不起作用。如果这是解决方案,我如何将srchResults转换为javascript中数组中的对象?如果不是什么问题?

我正在使用Angular 1.3.11。

我的代码:

<md-list-item class="md-3-line" ng-repeat="result in srchResults|limitTo:10" >
    <div class="md-list-item-text" ng-click= "getEmployee(result.employee_id)">
        <h3>{{result.last_name}}, {{result.first_name}}</h3>
        <h4>{{result.name}}</h4>
        <p>{{result.fk_cs_type}}, {{result.is_active==1?"Active":"In-Active"}}</p>
        <md-divider ng-if="!$last"></md-divider>
    </div>
</md-list-item>

3 个答案:

答案 0 :(得分:2)

回答有关

的问题
  

如何将srchResults转换为javascript中数组中的对象

将“对象对象”转换为“对象数组”,您可以执行以下操作:

var obj; //your parent object
var res = [] //will stor result here

for(var i in obj) {
   res.push(obj[i]);
}

循环结束后,您将res作为所需的数组

答案 1 :(得分:1)

另一种变体,如果您知道计数字段,则可以使用Array.prototype.slice

var data = {0:{a:1},1:{a:1},2:{a:1},3:{a:1},4:{a:1}}

我们知道这里有5个字段,所以我们可以做到

data.length = 5;
var arr = Array.prototype.slice.call(data);

var data = {
   0: {
     a: 1
   },
   1: {
     a: 1
   },
   2: {
     a: 1
   },
   3: {
     a: 1
   },
   4: {
     a: 1
   }
 }


 data.length = 5;
 var arr = Array.prototype.slice.call(data);

 console.log(data, arr);

或者我们可以稍微自动化

var data = {
   0: {
     a: 1
   },
   1: {
     a: 1
   },
   2: {
     a: 1
   },
   3: {
     a: 1
   },
   4: {
     a: 1
   }
 }

 var keys = Object.keys(data);
 data.length = 1+ +keys[keys.length-1];
 var arr = Array.prototype.slice.call(data);

 console.log(data, arr);

答案 2 :(得分:0)

试试此代码

<md-list-item class="md-3-line" ng-repeat="(key,value) in srchResults|limitTo:11" >
    <div class="md-list-item-text" ng-click= "getEmployee(value.employee_id)">
        <h3>{{value.last_name}}, {{value.first_name}}</h3>
        <h4>{{value.name}}</h4>
        <p>{{value.fk_cs_type}}, {{value.is_active==1?"Active":"In-Active"}}</p>
        <md-divider ng-if="!$last"></md-divider>
    </div>
</md-list-item>