2014-09-02 60 views
0

我試圖綁定列表中的數組,但列表需要在數組的值之前有一個靜態元素。Kendo mvvm模板與源無父元素

小提琴顯示我想要的結果,除了它目前嵌套li項目。

HTML:

<ul id="root"> 
    <li>blop</li> 
    <li data-template="list-template" data-bind="source: products"> 
    </li> 
    <script id="list-template" type="text/x-kendo-template"> 
     <li data-bind="text: name"></li> 
    </script> 
</ul> 

的JavaScript:

var vm = kendo.observable({ 
    products: [ 
     { id: 1, name: "foo" }, 
     { id: 2, name: "bar" } 
    ] 
}); 

kendo.bind($("#root"), vm); 

http://jsfiddle.net/zpqo80pw/

隨着KnockoutJS,有可能被使用的註釋語法:

<!-- ko: foreach: products --> 
<!-- /ko --> 

在Kendo UI中有類似的東西嗎?

回答

1

我認爲你應該可以通過擴展kendo綁定來實現這一點。我在jsfiddle上舉了一個小例子,看它是否符合你的要求。

kendo.data.binders.staticValue = kendo.data.Binder.extend({ 
     refresh: function() { 
       debugger; 
       var that = this; 
       var value = that.bindings["staticValue"].get(); 
       $(that.element).text(value + $(that.element).text()); 
      } 
     }); 
+0

我喜歡你暗示的東西,但JSFiddle和我一樣。也許你忘了保存?當我回到那段代碼時,我會考慮做類似的事情! – 2014-09-03 12:00:06

+0

對不起。我沒有更新jsfiddle。這裏是更新的一個http://jsfiddle.net/5g7ubm1s/2/ – user3731783 2014-09-03 16:17:05

+0

是不是我想要的,但你讓我一個體面的解決方案。 http://jsfiddle.net/5g7ubm1s/4/這預先應用了模板應用後我想要的任何HTML。謝謝! – 2014-09-04 00:37:01

0

這是一個老問題了,我知道,但如果這個人想這樣做嚴格MVVM,所有他們需要的是調用同樣的數據綁定和數據模板,但把它放在一個容器元素,例如作爲

<ul data-template="template-id" data-bind="source: items"></ul> 

,並在模板簡單地改變

<script id="list-template" type="text/x-kendo-template"> 
    <li data-bind="text: name"></li> 
</script> 

<script id="list-template" type="text/x-kendo-template"> 
    <li>#: staticValue # :: #: name #</li> 
</script> 

任何在模型中傳遞給模板的東西都可以使用,甚至可以在模板#旁邊混合使用數據注入:#語法