2014-06-06 42 views
1

我想有一個項目列表中顯示使用列表視圖,是這樣的:KendoUI移動交換機和數據源

<div data-role="view" data-model="my_model"> 
    <ul data-role="listview" data-bind="source: ds" data-template="list-tmpl"></ul> 
</div> 

在那裏我有使用view一個名爲my_model模型和listview其中source是綁定到ds

我的模型是一樣的東西:

var my_model = kendo.observable({ 
    ds: new kendo.data.DataSource({ 
     transport: { 
      read: readData, 
      update: updateData, 
      create: updateData, 
      remove: updateData 
     }, 
     pageSize: 10, 
     schema: { 
      model: { 
       id: "id", 
       fields: { 
        id: { type: "number" }, 
        name: { type: "string" }, 
        active: { type: "boolean" } 
       } 
      } 
     } 
    }) 
}); 

每個項目包括id,一個name(這是一個string)和一個名爲activeboolean

用來渲染每個元素模板是:

<script id="list-tmpl" type="text/kendo-tmpl"> 
    <span>#= name # : #= active #</span> 
    <input data-role="switch" data-bind="checked: active"/> 
</script> 

我在哪裏顯示name和(調試)的active值。另外,我呈現一個switch綁定到active

你應該看到:

enter image description here

觀察到的問題是:

  1. 如果你點擊一個交換機上,你會看到,active旁邊name值改變其值(如預期的那樣),但如果接着選擇另一個開關,則值(不是nameDataSource中的值)不會更新(儘管交換機的值正確更新TED)。
  2. DataSource中的update處理程序永遠不會被調用(即使對於第一個選定的開關,儘管第一個切換開關的DataSource已更新)。

你可以的jsfiddle檢查:http://jsfiddle.net/OnaBai/K7wEC/

如何使該數據源更新,並且update處理程序調用?

回答

1

好的,解決方案非常簡單:在DataSource定義中將autoSync設置爲true

var my_model = kendo.observable({ 
    ds: new kendo.data.DataSource({ 
     transport: { 
      read: readData, 
      update: updateData, 
      create: updateData, 
      remove: updateData 
     }, 
     autoSync: true, 
     pageSize: 10, 
     schema: { 
      model: { 
       id: "id", 
       fields: { 
        id: { type: "number" }, 
        name: { type: "string" }, 
        active: { type: "boolean" } 
       } 
      } 
     } 
    }) 
}); 

見的jsfiddle修改這裏:http://jsfiddle.net/OnaBai/K7wEC/1/