我正在使用ko.utils.arrayFirst从我的视图模型中获取匹配项,然后尝试更新其中一个属性,但我得到的是“不是函数”错误。任何帮助,将不胜感激。当我调用match.NewMessage(“”)时,我收到错误。不应该匹配我的视图模型中的可观察数组中的项的实例? SendMessage是在我的视图模型上定义的函数,因此是“self”引用,而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); });
}
};
答案 0 :(得分:1)
仅仅因为你已经将InstantMessages定义为ko.observableArray(),它并不意味着数组中包含的对象中的所有属性也是可观察的。
NewMessage属性需要初始化为ko.observable()
var im;
im.NewMessage = ko.observable();