【发布时间】:2014-03-09 06:58:05
【问题描述】:
这不是专门的 angularjs,而是 javascript。我从 angularjs 和 firebase 的聊天示例中抓取了一个过滤器,这就是它的样子。
angular.module('myApp')
.filter('reverse', function () {
function toArray(list) {
var k, out = [];
if( list ) {
if( angular.isArray(list) ) {
out = list;
}
else if( typeof(list) === 'object' ) {
for (k in list) {
if (list.hasOwnProperty(k)) {
out.push(list[k]);
}
}
}
}
return out;
}
return function(items) {
return toArray(items).slice().reverse();
};
});
但该代码的问题在于它删除了对象的一个重要部分,即我使用的键,以便我可以使用该键来查询单个对象。
在我的模板中:
<div ng-repeat="(id, post) in posts | orderByPriority | reverse">
<a href="posts/{{post.id}}">{{post.title}}</a>
</div>
我不能在(id, post) 中使用id,因为它只是reversed 数组的索引,即01234...
现在我在反向过滤器中添加了这个,但我无法让它工作。
for (k in list) {
if (list.hasOwnProperty(k)) {
list[k].id = k; // this is the one that I added.
out.push(list[k]);
}
}
【问题讨论】:
-
每条记录上应该已经有一个 $id 可以使用。
标签: javascript angularjs firebase