knockoutjs:我有这个错误Uncaught TypeError:无法读取未定义的属性'messages'

时间:2018-06-10 12:55:09

标签: knockout.js

我正在尝试将一个对象转换为一个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()可观察数组,但是我怎样才能编写代码。

1 个答案:

答案 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)

我猜测范围会搞砸你当前的实现