我在 $scope 变量中有一个数组,如下所示:
$scope.objects: [
{selected: true, description: 'string1'},
{selected: false, description: 'string2'},
{selected: true, description: 'string3'},
{selected: true, description: 'string4'}
]
“选定”属性可以通过 UI 中呈现的复选框进行更改。
我正在寻找一种方法来观察数组中的“选定”属性。每次改变时,数组都需要重新排序。
带有“selected:false”的对象需要放在数组的末尾。上面的数组看起来像这样。
$scope.objects: [
{selected: true, description: 'string1'},
{selected: true, description: 'string3'},
{selected: true, description: 'string4'},
{selected: false, description: 'string2'}
]
例如,如果第二个元素的 selected-value 更改为 false,则数组应如下所示:
$scope.objects: [
{selected: true, description: 'string1'},
{selected: true, description: 'string4'},
{selected: false, description: 'string3'},
{selected: false, description: 'string2'}
]
谁能帮我解决这个问题吗?
问候
最佳答案
您应该编写一个过滤器来为您进行排序。
我会尝试这样的事情,使用 lodash .
该代码片段未经测试或任何内容,只是用记事本编写,但它可以为您提供一个起点。
app.filter('sortSelected', function() {
return function(items) {
var groups = _.groupBy(items, 'selected');
};
var selected = _.sortBy(groups[true], 'description');
var unselected = _.sortBy(groups[false], 'description');
return selected.concat(unselected);
});
关于javascript - 当数据改变时组织数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30640065/