始终使用Angular显示Key First

时间:2014-02-17 17:51:19

标签: angularjs

我有一个重复的重复:

<div ng-repeat="(k, v) in query_p[$index].tags">

我希望如果键(k)是某个字符串,比如说“foo”,那么该字符串总是首先出现在列表中。似乎getter选项或orderBy仅适用于数组。任何人都有一个如何实现这一目标的例子吗?

1 个答案:

答案 0 :(得分:1)

基本上你有一个无序的对象,你希望它有某种顺序。

要做到这一点,你需要创建一个返回一些有序对象的函数。

myApp.filter('promote_foo', function() {
    return function(object, comp) {
        console.log(object);
        console.log(comp);
        var ordered = [];
        for (var key in object) {
            var obj = {
                key: key,
                value: object[key]
            };
            if (key === comp)
                ordered.splice(0,0,obj);
            else
                ordered.push(obj);

        }
        console.log(ordered);
        return ordered;
    };
});

该函数接受一个参数,如果该键匹配它将提升和反对。现在我只能直接在控制器中调用它,但你可以像使用任何角度过滤器一样使用它。

$scope.order = $filter('promote_foo')($scope.data, 'foo');

此外,您可以使用小提琴here

希望这有帮助!