我在这里关注 RN 关于发布/订阅同步的博文:
http://www.knockmeout.net/2012/05/using-ko-native-pubsub.html
我的应用程序有一个带有各种内部视图模型的“外壳”视图模型,其中一个是“文件夹”。在文件夹视图模型中,我列出了文件夹。
从 shell 的菜单栏中,我需要能够添加另一个文件夹。这就是我现在实现它的方式:
在 shell.js 中:
this.clickedAddFolder = ko.observable(false).publishOn("CLICKED_ADD_FOLDER");
this.addFolder = function () { clickedAddFolder(true); clickedAddFolder(false); };
然后在 folder.js 中:
var clickedAddFolder = ko.observable().subscribeTo("CLICKED_ADD_FOLDER");
innerModel.addFolder = ko.computed(function() {
if (clickedAddFolder()) {
var folder = new folderViewModel(addFolderDto);
innerModel.folders.push(folder);
refreshIsotope();
}
}).bind(this);
这个想法是 shell.js 将快速切换 folder.js 订阅的 clicked_add_folder 属性。一个计算出的 observable 检测到这个变化并触发一些功能——添加一个文件夹。这是一个合理的解决方案吗?我想避免找到“有效”的解决方案;我想学习如何正确地达到这个结果。