1
我試圖通過online
屬性爲用戶進行排序:排序陣列沒有重繪內容
var userViewModel = function(data){
var self = this;
self.name = ko.observable(data.name);
self.online = ko.observable(data.online);
};
var mainViewModel = function(data){
var self = this;
self.users = ko.observableArray(data.users.map(function(user){
var model = new userViewModel(user);
model.online.subscribe(function(){
self.users.sort(function (a, b) { return b.online() - a.online(); });
});
return model;
}));
self.users.subscribe(function(){
console.log('users have changed');
});
};
HTML:
<div data-bind="foreach: users">
Online: <div data-bind="text: online"></div>
<div data-bind="text: name"></div>
</div>
一切工作正常,但改變網絡屬性時,用戶分類和「用戶已更改」已記錄。我知道這是因爲我正在改變原始數組。我想要的是 - 不改變原始數組,只是顯示它排序(像角does it)
使用過濾器不能排序。我想如果你使用過濾器,你會得到單獨的數組,只有登錄用戶。 –
我不需要只記錄用戶,我需要所有,但排序。 – karaxuna
是的,使兩個陣列脫機一個在線。相應地過濾它們,這樣你就可以將它們全部分成兩個不同的數組,它們讓你能夠在一個特定的集合上執行一些操作,並且如果有人離線,那麼你只需要移除該元素並將其放入離線數組中反之亦然。 –