0

我正在使用 ko.utils.arrayFirst 从我的视图模型中获取匹配项,然后尝试更新其中一个属性,但我收到“不是函数”错误。任何帮助,将不胜感激。当我调用 match.NewMessage("") 时出现错误。不应该匹配我的视图模型中我的可观察数组中的一个项目的实例吗?SendMessage 是在我的视图模型上定义的函数,因此是“自我”引用,而 InstantMessages 被定义为 ko.observableArray。

self.SendMessage = function (im) {
    var match = ko.utils.arrayFirst(self.InstantMessages(), function (item) {
        return im.InstantMessageId === item.InstantMessageId;
    });

    if (match) {
        var newMessage = new Chat.Message();
        newMessage.FromUser = self.User;
        newMessage.Text = match.NewMessage;
        newMessage.InstantMessageId = match.InstantMessageId;

        match.NewMessage("");

        self.ChatHub.server.sendMessage(newMessage).fail(function (e) { alert(e); });
    }
};
4

1 回答 1

1

仅仅因为您将 InstantMessages 定义为 ko.observableArray(),并不意味着数组中包含的对象中的所有属性也是可观察的。

NewMessage 属性需要初始化为 ko.observable()

var im;
im.NewMessage = ko.observable();
于 2013-05-07T22:56:56.483 回答