我正在尝试将一个对象转换为一个observable,但后来我的计算函数不能正常工作
onlineFriends.friend = function(data) {
var item = {
country : ko.observable(data.country),
firstName : ko.observable("oto"),
userName : ko.observable(data.username),
id : ko.observable(data.id),
picture : ko.observable(data.picture),
hasInitMessage : ko.observable(false),
messages : ko.observableArray([]),
hasInitMessage : ko.observable(false),
unreadmessages_count : ko.computed(function() {
var unreadMsg = [];
ko.utils.arrayForEach(item.messages(), function (item) {
if(item.messageStatus === "UNREAD"){
unreadMsg.push(item);
}
});
return unreadMsg.length;
}),
//onlineFriends.friendsOnline.push(self);
}
return item;
};
我理解它抱怨我想循环的message()可观察数组,但是我怎样才能编写代码。
答案 0 :(得分:0)
尝试将计算声明更改为此
unreadmessages_count : ko.computed(function() {
var unreadMsg = [];
ko.utils.arrayForEach(this.messages(), function (item) {
if(item.messageStatus === "UNREAD")
unreadMsg.push(item);
});
return unreadMsg.length;
},this)
我猜测范围会搞砸你当前的实现