2012-04-26 68 views

回答

3

通常情況下,你想改變你的HTML正確在此方案中工作。但是,如果這是不可能的,那麼你可以使用插入跨度爲你自定義綁定。

這將是這樣的:

ko.bindingHandlers.insertText = { 
    init: function(element, valueAccessor) { 
     var span = document.createElement("span"), 
      firstChild = element.firstChild; 

     element.insertBefore(span, firstChild); 
     ko.applyBindingsToNode(span, { text: valueAccessor() });  
    }  
}; 

樣品:http://jsfiddle.net/rniemeyer/fLmXu/

3

您當前代碼將覆蓋,因爲「文」結合套的innerText(或的textContent)爲元素,讓你的文字H2結合將覆蓋任何現有的嵌入式HTML(如您的跨度)。

你可以這樣做:

<h2> 
    <span data-bind="text:firstName"></span> 
    <span data-bind="text:lastName "></span> 
</h2>​ 
+0

是的,我明白這一點,但我不能改變現在的HTML結構。有沒有可能做到這一點,沒有html結構的變化。 – HashCoder 2012-04-26 13:08:53

8

有了你可以使用一個虛擬元素爲H2的文字,類似於約翰Earles解決方案最新的淘汰賽,但它意味着你可以風格姓氏分別以名字

<h2> 
    <!-- ko text: firstName --><!-- /ko --> 
    <span data-bind="text: lastName"></span> 
</h2>