2016-09-06 75 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