Mvvm KnockoutJS:对同一个div应用不同的ViewModels
想象一下,页面上有n个按钮,每个按钮在单击时打开一个div。实际上,有一个单独的div,它在单击时被重新关联到每个按钮。我希望div上的数据绑定到每个按钮的ViewModel实例 我不知道我是否在正确的路径上,但到目前为止,我有一个VM对象的实例连接到每个按钮。当点击按钮x时,我可以得到它相应的VM并重新应用绑定到div。在这种情况下,我需要解耦旧绑定-我不知道如何做Mvvm KnockoutJS:对同一个div应用不同的ViewModels,mvvm,knockout.js,Mvvm,Knockout.js,想象一下,页面上有n个按钮,每个按钮在单击时打开一个div。实际上,有一个单独的div,它在单击时被重新关联到每个按钮。我希望div上的数据绑定到每个按钮的ViewModel实例 我不知道我是否在正确的路径上,但到目前为止,我有一个VM对象的实例连接到每个按钮。当点击按钮x时,我可以得到它相应的VM并重新应用绑定到div。在这种情况下,我需要解耦旧绑定-我不知道如何做 我的方法对我来说似乎很好,但这可能是因为我来自C#/Java背景,将所有东西都视为对象和引用。也许有更好的方法?在一个典型的KO
我的方法对我来说似乎很好,但这可能是因为我来自C#/Java背景,将所有东西都视为对象和引用。也许有更好的方法?在一个典型的KO应用程序中,您可能希望一次性应用绑定。Knockout的模板和控制流绑定可以帮助您“交换”内容 例如,您可能有一组内容,如:
this.vms = [
{ id: 1, data: {} },
{ id: 2, data: {} },
{ id: 3, data: {} }
];
然后,您可以有一个可观察对象来表示当前选定的项目:
this.currentVM = ko.observable();
现在,您可以通过在vms
上执行foreach
来生成按钮。当您单击其中一个项目时,可以使用该项目填充currentVM
然后,您可以针对currentVM
渲染一个节,如下所示:
<div data-bind="with: currentVM">
...some content
</div>
…一些内容
Knockout将处理currentVM
为空(未呈现任何内容),然后为您处理内容的交换。这里的简要示例:
这个问题的答案更进一步的是这个想法: