的劍術數據源只返回陣列和我的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 }
}
})
});
非常有幫助,但我不能完全得到它的工作。如果我在上面的例子中刪除了我的列表視圖,它似乎是視圖模型數據:和schema:data;永遠不會運行。我添加了一個Name:字段,並將其設置爲schema:data,其中列表視圖存在,並且它可以工作,而不需要它沒有的列表視圖。我添加了一個變化:爲了獲得restfull調用的成功,但它永遠不會觸發。手動調用clientView.data.read();鎖定模擬器。儘管我覺得我越來越接近了。 :P我仔細檢查你的答案,在那裏丟失了好東西。 – kpg
Kendo UI DataSource不會發出請求,除非通過數據綁定窗口小部件或開發人員告知。你正在談論的鎖定可能是一個單獨的問題 - 檢查JavaScript錯誤。 – dimodi
我必須對此做一個解決方法,因爲我的休息網址的形式是.../clients/{id},其中{id}取決於前一個視圖。最好的我可以找到url中的URL:在我設置全局變量ID很久之前,在加載scrip時,傳輸的部分已經解析。解決方法是在視圖onShow處理程序中調用loadClient函數,然後執行典型的ajax調用 - 然後使用jQuery設置我的html元素 - 以簡單和熟悉的方式解決我的問題。我將其標記爲答案,因爲它是我問的問題的答案。 – kpg