我有一个设置为使用淘汰赛的 javascript 视图模型,并且我在该视图模型中有两个视图模型,在我的页面上下文中我有数据绑定。所以我设置了我的页面,以便一个视图模型通过“with”绑定绑定到我页面的一部分,然后另一个视图模型通过“with”绑定绑定到另一个部分。现在我已经设置好了,以便在点击事件之后页面上的一个项目我绑定到 $root (容器视图模型)并且我想编辑另一个视图模型上的一些可观察值(不在本节的我有“with”绑定的页面)。在我调用的“root”方法中,我将其设置为“var self = this”,然后编辑我需要在另一个视图模型上编辑的属性。
有没有办法将我的范围从 $parent 或 $root 调用更改为我目前得到的范围之外的东西?我只希望范围是容器对象的范围,而不是特定的视图模型。
代码示例(在 TypeScript 中):
class Container
{
viewModelA = new ViewModel();
viewModelB = new ViewModelB();
clickMe(){
var self = this;
console.log(self);
self.viewModelB.property("yes");
}
}
<span data-bind="with: viewModelA"> <button data-bind="event: {click: $root.clickMe}" /></span>
console.log 将输出 viewModelA,我会在 self.viewModelB 调用上收到错误。