javascript - 如何在knockout js中的两个 View 模型之间交换值

标签 javascript knockout.js knockout-postbox

您好,我有两个 View 模型,我想在它们之间传递一个值。 这是 js fiddle

`http://jsfiddle.net/sohimohit/e84u8L85/`

我希望当用户点击显示另一个 div 按钮时相应的项目名称应该显示在另一个 div 上。意味着我想将一个 View 模型值显示到另一个 View 模型值中。 其次,当用户点击显示另一个 div 按钮时,另一个 div 出现,我想要一个取消选项,以便用户可以返回 firstdiv。我怎样才能做到这一点。

最佳答案

您可以为其使用全局变量 container1VMcontainer2VM
例如。

的呼唤
 container1VM.isVisible(!container1VM.isVisible());
 container2VM.isVisible(!container2VM.isVisible());  

将使可见的容器不可见。

JSFiddle DEMO

代码:

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/

相关文章:

PHP 字符串到 javascript 可能会破坏代码 - 我猜是某个字符有问题吗?

javascript - typeError _ref 未定义

javascript - knockout.js 中的事件处理程序模型更改

javascript - 使用 javascript 在 ASP.NET MVC 中加载部分 View

jquery - knockout 检测 foreach 中是否有可见的

knockout.js - 在 Knockout 中链接/同步 View 模型的最佳方式是什么?

Javascript onchange 仅适用于特定选项类

javascript - Nodejs GET REST API 和频繁访问 MongoDb 数据库

javascript - Knockout Postbox 组件之间的通信 - 如何确保订阅者处于事件状态