您好,我有两个 View 模型,我想在它们之间传递一个值。 这是 js fiddle
`http://jsfiddle.net/sohimohit/e84u8L85/`
我希望当用户点击显示另一个 div 按钮时相应的项目名称应该显示在另一个 div 上。意味着我想将一个 View 模型值显示到另一个 View 模型值中。 其次,当用户点击显示另一个 div 按钮时,另一个 div 出现,我想要一个取消选项,以便用户可以返回 firstdiv。我怎样才能做到这一点。
最佳答案
您可以为其使用全局变量 container1VM
和 container2VM
。
例如。
container1VM.isVisible(!container1VM.isVisible());
container2VM.isVisible(!container2VM.isVisible());
将使可见的容器不可见。
代码:
HTML:
<div id="container1">
<div data-bind="visible: !isVisible()">
<ul >
<li >Container1 item</li>
<!-- ko foreach: myItems -->
<li>Item <span data-bind="text: $data"></span></li>
<button data-bind="click:$root.showDiv">show another div</button>
<!-- /ko -->
</ul>
</div>
</div>
<div id="container2" data-bind="visible:isVisible">
<ul>
<li >Container2 item</li>
<!-- ko foreach: myItems -->
<li>Item <span data-bind="text: $data"></span></li>
<!-- /ko -->
</ul>
<button data-bind="click:$root.cancel">cancel</button>
</div>
Javascript:
function Container1ViewModel()
{
var self = this;
self.isVisible = ko.observable(false);
self.showDiv = changeVisibility;
self.myItems = ko.observableArray();
self.myItems.push("ABC");
self.myItems.push("CDE");
}
function Container2ViewModel() {
var self = this;
self.isVisible = ko.observable();
self.myItems = ko.observableArray();
self.myItems.push("XYZ");
self.myItems.push("PQR");
self.cancel = changeVisibility;
}
function changeVisibility()
{
container1VM.isVisible(!container1VM.isVisible());
container2VM.isVisible(!container2VM.isVisible());
}
var container1VM = new Container1ViewModel();;
var container2VM = new Container2ViewModel();;
ko.applyBindings(container1VM, document.getElementById("container1"));
ko.applyBindings(container2VM, document.getElementById("container2"));
关于javascript - 如何在knockout js中的两个 View 模型之间交换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25376632/