2014-09-01 76 views
0

爲什麼下面的代碼不能按預期工作?當我只調用一個ko.applyBindings方法時,它可以工作。 我們可以在一個頁面中調用多個ko.applyBindings方法嗎?我們可以在一個頁面中調用多個ko.applyBindings方法嗎?

<body> 
    <form id="form1" runat="server"> 
    <div> 
    <p>First name: <input data-bind="value: firstName" /></p> 
<p>Last name: <input data-bind="value: lastName" /></p> 
<h2>Hello, <span data-bind="text: fullName"> </span>!</h2> 
The name is <span data-bind="text: personName"></span> 
    </div> 
    </form> 
</body> 
<script type="text/javascript"> 
    var myViewModel = { 
     personName: 'Bob', 
     personAge: 123 
    }; 

var ViewModel=function(first, last) 
{ 
this.firstName=ko.observable(first); 
this.lastName=ko.observable(last); 
this.fullName=ko.pureComputed(function() 
{ 
    return this.firstName() + " " + this.lastName(); 
    }, this); 
}; 
ko.applyBindings(myViewModel); 
ko.applyBindings(new ViewModel("Hello", "World")); 
</script> 

回答

2

是的,你可以。但是你需要調用ko.applyBindings和你想要綁定的元素。下面是從您發佈的代碼示例借款:

HTML:

<div id="model1"> 
    <p>First name: <input type="text" data-bind="value: firstName" /></p> 
    <p>Last name: <input type="text" data-bind="value: lastName" /></p> 
    <h2>Hello, <span data-bind="text: fullName"> </span>!</h2> </div> 

<div id="model2"> 
    The name is <span data-bind="text: personName"></span>, 
    age is <span data-bind="text: personAge"></span> 
</div> 

的JavaScript:

var myViewModel = { 
    personName: 'Bob', 
    personAge: 123 
}; 

var ViewModel = function(first, last) { 
    this.firstName=ko.observable(first); 
    this.lastName=ko.observable(last); 
    this.fullName=ko.computed(function() { 
     return this.firstName() + " " + this.lastName(); 
    }, this); 
}; 

ko.applyBindings(myViewModel, document.getElementById('model2')); 
ko.applyBindings(new ViewModel("Hello", "World"), document.getElementById('model1')); 

注意,我改變了你的ko.pureComputedko.computed,因爲在沒有pureComputed我正在使用的knockout 3運行時。你使用擴展名嗎?

JSFiddle:http://jsfiddle.net/krpqzwqd/

+1

'ko.pureComputed'是knockout 3.2的一部分。 – 2014-09-01 20:15:18

+0

啊,謝謝你,@MichaelBest。 – Paul 2014-09-01 23:41:53

相關問題