2014-02-13 79 views
0

我已經在淘汰賽中創建了多個模板,基本上充當頁面上的控件。作爲一個例子一個簡單的控制從一組值的選擇是這樣的:在淘汰賽中創建可重複使用的模板

<div data-bind="foreach: values"> 
     <div data-bind="css: { selectedItem: $parent.value() == $data.value }, event: { click: function() { $parent.value($data.value) } }"> 
      <span data-bind="text: name"></span> 
     </div> 
</div> 

我想在一個單一的視圖模型重複使用跨多個屬性此模板,但目前我看不到如何,因爲綁定是「硬編碼」,即它會一直在尋找一個值屬性和名稱屬性等。

我知道foreach綁定具有「as」別名選項,是否有任何類似我可以在哪裏爲模板提供許多屬性的別名?還是有更好的方法來解決這個問題?

目前我有一箇中間視圖模型,它在構造函數中使用值,值和名稱屬性,然後將其用於綁定,但這對我來說感覺不必要的複雜。

回答

0

您可以組合到模板和foreach技術來實現你需要

http://knockoutjs.com/documentation/template-binding.html結果(見注3)

如果不知道您的視圖模型/ HTML的剩餘部分,下面應該給的想法它如何工作

<script type="text/html" id="name-set"> 
    <div data-bind="css: { selectedItem: $parent.value() == $data.value }, event: { click: function() { $parent.value($data.value) } }"> 
     <span data-bind="text: name"></span> 
    </div> 
</script> 

<div data-bind="template: { name: 'name-set', foreach: values }"></div> 
+0

嗨羅伯特,我展示的模板只是一個例子,其他我使用的是比使用foreach可以處理更復雜。我的問題更多的是能夠爲一個模板提供一組別名,以便更容易重用。 – nzyme