2014-06-10 66 views
0

我是knockout.js的新手,并想知道如何将多个视图链接到单个ViewModel。我在不同的HTML页面中有3个视图,当我在第3页时,我想要能够获得所有3个视图的JSON对象的按钮“onclick”。如何使用Knockout.js将多个视图绑定到单个ViewModel

任何人都可以让我知道如何使用Knockout.js完成这项工作吗?

例如:1

<div data-role="page" id="Page1"> 
<div data-role="header"> 
    <h1>Simple counter</h1> 
</div> 
<div data-role="content"> 
    <p>You have clicked the button <span data-bind="text: count"></span> times.</p> 
    <input data-bind="value: YourName">Your Name: </input> 
    <input type="button" value="Convert To JSON" data-bind="click: ConvertToJSON" /> 

</div> 

第2页

<div data-role="page" id="Page2"> 
<div data-role="header"> 
    <h1>Page2</h1> 
</div> 
<div data-role="content"> 
    <p>Hey Hey Hey <span data-bind="text: pagecount2"></span>.</p> <br /> 

    This is supposed to be the number from the previous page <span data-bind="text: testspan"></span> 
    <input type="button" value="Convert To JSON" data-bind="click: ConvertToJSON2" /> 
    <script type="text/javascript" > 
    var Page2ViewModel = function() { alert("Page2"); 

    this.pagecount2 = ko.observable(0); 
    this.testspan = ko.observable(100); 
    this.ConvertToJSON2 = function() { 

      var data = ko.toJSON(this); 
      $.ajax({ 
       type: 'POST', 
       url: '/Person/Save', 
       data: data, 
       dataType: 'json', 
       beforeSend: function() { 
        alert(data); 
       }, 
       success: function (data) { 
        alert(data); 
       } 
      }); 
     }; 
    }; 

    ko.applyBindings(new Page2ViewModel(), document.getElementById("Page2")); 


    </script>  
</div> 
<script type="text/javascript"> 

</script> 

ConvertToJson2点击我想{"count": "", "YourName":"", "pagecount2":"", "testspan":""}

回答

-1

申报JSON对象全部三个视图模型作为全局对象,而不把var放在他们面前,他们将在你处处可用。

+0

OP想要链接一个* Single Viewmodel * –

2

可以绑定一个DOM元素及其所有孩子:

ko.applyBindings(viewModel, domElement); 

如果你有一个共同的父(DOM元素)与所有的美景,用它作为domElement

否则,您可以使用相同的视图模型在任意多的DOM元素上使用ko.applyBindings。请记住,DOM元素只能链接到一个视图模型。

相关问题