我正在从php mysql中检索搜索查询到我的angularjs应用程序中。结果采用以下格式:
然后,此对象将显示在我的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>
答案 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>