设想
我正在使用 RequireJS 和 KnockoutJS 构建一个小部件。ko.applyBindings(widgetViewModel, thisWidget)
小部件在实例化时调用。无论站点是否使用 Knockout 本身,该小部件都应该能够在站点中使用。
问题
当我将小部件放入使用 Knockout 的站点时,如果该站点ko.applyBindings(siteViewModel)
在设置小部件后调用,则会将错误的视图模型应用于小部件。小部件得到siteViewModel
而不是期望的widgetViewModel
.
到目前为止我尝试过的
重新排序调用以
ko.applyBindings(siteViewModel)
在小部件设置之前发生。 这可行但并不理想,因为它限制了我的小部件的调用方式。为我的小部件添加一个自定义绑定,该绑定应用正确的绑定上下文(即
widgetViewModel
到我的小部件并返回{controlsDescendantBindings: true};
不幸的是,该站点使用的 Knockout 实例与我的小部件使用的实例不同(因为需要)所以我需要访问站点的实例,可能通过查看全局命名空间。