两个视图模型之间的淘汰赛传递值
Posted
技术标签:
【中文标题】两个视图模型之间的淘汰赛传递值【英文标题】:Knockout Passing Value between two view models 【发布时间】:2014-04-01 06:13:42 【问题描述】:如何在两个不同的视图模型中传递元素的可见属性。假设在 1 个视图模型中我的可见是假的,在另一个视图模型中的点击功能我想让它可见。是否可以使用 Knockout。
ViewModel1 = function()
var self = this;
this.dataItem = ko.observable(false);
;
视图模型 2
ViewModel2 = function()
var self = this;
// Click Function
this.showItem= function()
ViewModel1.dataItem = ko.observable(true);
;
;
【问题讨论】:
看看这里的答案:***.com/questions/9293761/… 我建议添加一些代码来说明您正在尝试做什么,否则您可能会遇到问题被关闭的风险。 ***.com/questions/how-to-ask 谢谢 Tanner,参考链接中的解决方案不适合我。还有其他解决方案吗?感谢您的建议,我会用一些代码更新我的问题。 在 ViewModel2 中你调用 this.ViewModel1,但肯定是试图在 viewmodel2 中调用一个名为 ViewModel1 的变量? 抱歉@Alexander Troup,我只是编辑了那个。仍然没有得到输出。 【参考方案1】:您应该试试出色的knockout-postbox。它旨在促进不同视图模型之间的解耦通信。
在您的情况下,您可以像这样使用它:
注意: syncWith 用于双向通信,如果你想要单向通信,那么你应该尝试 subscribeTo 和 publishOn 方法。
视图模型 1
ViewModel1 = function()
var self = this;
this.dataItem = ko.observable(false).syncWith("visible", true);
;
视图模型 2
ViewModel2 = function()
var self = this;
self.dataItem = ko.observable().syncWith("visible", true);
// Click Function
this.showItem= function()
self.dataItem = ko.observable(true);
;
;
【讨论】:
【参考方案2】:// Click Function
this.showItem= function()
ViewModel1.dataItem(true);
;
【讨论】:
以上是关于两个视图模型之间的淘汰赛传递值的主要内容,如果未能解决你的问题,请参考以下文章