我正在使用 Durandal 框架。我有一个记录器模块,用于显示和存储向用户显示的消息。消息使用 obsArray.push(...) 存储在一个可观察的数组中。
var logMessages = ko.observableArray();
logMessages.push({
dt: dt,
tp: type,
msg: message
});
那里没问题。同样在这个模块中,我导出 obsArray 变量。
var logger= {
logMessages: logMessages,
};
return logger;
在另一个名为“消息”的模块中,我有一个视图/视图模型,它从记录器获取 obsArray 并显示消息。我在消息 vm 中有另一个名为 _mess 的可观察数组,它是通过执行填充的
_mess(logger.logMessages())
可观察数组 _mess 绑定到我的视图。当我去看风景时,一切都很好。我在记录器中看到了可观察数组“logMessages”的内容。
但是,当我查看视图时,我可以按下一个按钮来调用记录器并导致对数组的推送。数据已添加到数组中,但我的视图不会自动更新。我必须在消息 vm 中的可观察数组上调用 valueHasMutated,如下所示:
var addMessage = function () {
logger.show('this is test');
_mess.valueHasMutated(); // required to see the update appear in the view
};
如果我不调用 valueHasMutated,我的视图不会更新。
这似乎是一个非常简单的用例,我可能只是缺少一个步骤或配置。
谢谢