Knockout.js knockoutjs:我有一个错误未捕获类型错误:无法读取属性';信息';未定义的

Knockout.js knockoutjs:我有一个错误未捕获类型错误:无法读取属性';信息';未定义的,knockout.js,Knockout.js,我试图将一个对象投射到一个可观察对象中,但是我的计算函数不起作用 onlineFriends.friend = function(data) { var item = { country : ko.observable(data.country), firstName : ko.observable("oto"), userName : ko.observable(data.username), id : ko.

我试图将一个对象投射到一个可观察对象中,但是我的计算函数不起作用

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()observable数组,但是我如何编写代码。

尝试将计算声明更改为此

  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)
我猜范围界定会与您当前的实现相混淆

的答案可能会有所帮助