2016-09-06 64 views
0

新手到劍道劍道UI MVVM數據源結合HTML輸入元件

的劍術數據源只返回陣列和我的RESTful API返回一個客戶端爲一個元件的陣列。

但是,我似乎無法將客戶端的'姓名'字段綁定到html輸入框。

但是,如果我把它放在'ul'中,我可以使用這些數據,如下面的代碼所示。我知道JSON響應格式良好,因爲我可以console.log(obj [0] .Name);

我試圖返回數據源中的obj [0],但這只是打破了一切。 (沒有切片錯誤消息,因爲它試圖切片數組)。

我敢肯定,這是容易的,但我必須只是在想這一切都錯了...

Html和JS如下:

<div data-role="view" data-title="Client Detail" data-model="app.clientView"> 

<!-- this does not work --> 

<input data-bind="value: app.clientView.data"/> 
<input data-bind="value: app.clientView.data[0].Name"/> 
<input data-bind="value: app.clientView.data.Name"/> 

<!-- this works --> 

<ul data-role="listview" data-source="app.clientView.data" data-template="client-template"></ul> 

<script type="text/x-kendo-template" id="client-template"> 
    <a href="components/clientView/view.html?id=#: ID #"> 
     <div>#: Name #</div> 
     <div>#: LastActivityOn #</div> 
    </a> 
</script> 

app.clientView = kendo.observable({ 
 
    data: new kendo.data.DataSource({ 
 
     transport: { 
 
      read: { 
 
       url: app.uri + "clients/69", //+ id, 
 
       type: "get", 
 
       dataType: "json", 
 
       beforeSend: function (req) { 
 
        req.setRequestHeader('X-authKey', app.key); 
 
       } 
 
      } 
 
\t \t }, 
 
     schema: { 
 
     \t data: function (response) { 
 
      \t console.log(response); 
 
      \t var obj = $.parseJSON(response); 
 
       console.log(obj[0].Name); 
 
      \t return obj; 
 
     \t } 
 
     } 
 
    }) 
 
});

回答

2

Kendo UI MVVM value bind不能指向Kendo UI數據源實例。只有source綁定可以做到這一點。

在你的情況,你的返工實施和增加一些新的領域視圖模型(app.clientView),其可用於值綁定。 populate這些字段after the DataSource instance receives its data可以。

在旁註中,不需要通過在綁定配置中包含viewModel引用來詳細指定viewModel字段。你只需要那裏的字段名稱。檢查Kendo UI MVVM demos

+0

非常有幫助,但我不能完全得到它的工作。如果我在上面的例子中刪除了我的列表視圖,它似乎是視圖模型數據:和schema:data;永遠不會運行。我添加了一個Name:字段,並將其設置爲schema:data,其中列表視圖存在,並且它可以工作,而不需要它沒有的列表視圖。我添加了一個變化:爲了獲得restfull調用的成功,但它永遠不會觸發。手動調用clientView.data.read();鎖定模擬器。儘管我覺得我越來越接近了。 :P我仔細檢查你的答案,在那裏丟失了好東西。 – kpg

+0

Kendo UI DataSource不會發出請求,除非通過數據綁定窗口小部件或開發人員告知。你正在談論的鎖定可能是一個單獨的問題 - 檢查JavaScript錯誤。 – dimodi

+0

我必須對此做一個解決方法,因爲我的休息網址的形式是.../clients/{id},其中{id}取決於前一個視圖。最好的我可以找到url中的URL:在我設置全局變量ID很久之前,在加載scrip時,傳輸的部分已經解析。解決方法是在視圖onShow處理程序中調用loadClient函數,然後執行典型的ajax調用 - 然後使用jQuery設置我的html元素 - 以簡單和熟悉的方式解決我的問題。我將其標記爲答案,因爲它是我問的問題的答案。 – kpg