2014-01-20 93 views
1

爲顯示目的修改綁定文本的最佳方法是什麼?淘汰賽js - 替換綁定文本

計算字段,自定義綁定等?

比如,你在與地產「酒吧」這是一個字符串,有破折號有一個對象「富」,你要替換的破折號和換行符

的jsfiddle:http://jsfiddle.net/yUceG/

的JavaScript:

function MyViewModel() { 
    this.theFoo = { Bar: "abc-def-xyz" }; 
    } 
    ko.applyBindings(new MyViewModel()); 

的觀點可能看起來像這樣

<div data-bind="with: theFoo"> 
    <span data-bind="text : Bar" /> 
</div> 

或本 -

<!--ko with: theFoo --> 
    <!--ko text: Bar--><!--/ko--> 
<!--/ko--> 

回答

0

一種方法是使用自定義綁定處理程序。

ko.bindingHandlers.lineBreaks = { 
    init: function (element, valueAccessor, allBindings, data, context) {   
     $(element).html(value.replace(/-/g, '<br />'));  
    } 
}; 

updated fiddle

而如果觀察到的價值可能會改變,那麼你就可以說是在init相同的代碼添加更新部分的結合處理。

ko.bindingHandlers.lineBreaks = { 
    init: function (element, valueAccessor, allBindings, data, context) {   
     $(element).html(value.replace(/-/g, '<br />'));  
    }, 
    update: function (element, valueAccessor, allBindings, data, context) { 
     $(element).html(value.replace(/-/g, '<br />'));  
    } 
}; 

現在顯示的值將通過綁定處理程序進行格式化,當observable的值更新時。

您也可以使用extender獲得同樣的效果。

+0

感謝您指點我的擴展! – user210757