【发布时间】:2017-12-16 00:46:14
【问题描述】:
我正在使用 knockout 的本机发布/订阅支持。我了解我需要执行以下操作才能在主题中发帖/阅读:
var postbox = ko.subscribable();
var vendorTopic = 'vendorInfo';
//View model 1
//Subscribe
ko.subscribable.fn.subscribeTo = function(topic) {
postbox.subscribe(this, null, topic);
return this; //support chaining
};
this.selectedVendor = ko.observableArray().subscribeTo(vendorTopic);
//View model 2
//Publish
ko.subscribable.fn.publishOn = function (topic) {
this.subscribe(function (newValue) {
postbox.notifySubscribers(newValue,topic);
});
return this; //support chaining
};
this.vendor = ko.observableArray([]).publishOn(vendorTopic);
但是,如果我的 viewmodel2 有 2 个可观察对象并且我希望能够在我的 viewmodel1 中访问它们,我是否需要创建两个主题 - 每个可观察对象一个?如果说我的组件有 15 个我想在另一个组件中使用的 observable,这听起来像是一个糟糕的设计。
但我在互联网上找不到任何其他有用的示例。任何帮助表示赞赏!
【问题讨论】:
-
只是想一想,我们应该能够以键值对的方式发送一个包含可观察对象的新值的对象数组,然后在 viewmodel1 内部我们可以解析对象,对吧?
标签: knockout.js publish-subscribe