【问题标题】:Kendo UI MVVM Datasource binding to html input elementKendo UI MVVM 数据源绑定到 html 输入元素
【发布时间】:2016-09-06 19:44:38
【问题描述】:

剑道新手

kendo 数据源只返回数组,而我的 RESTful api 将客户端作为一个元素的数组返回。

但是,我似乎无法将客户端的“名称”字段绑定到 html 输入框。

但是,如果我将数据放在“ul”中,我可以使用这些数据,如下面的代码所示。我知道 json 响应格式正确,因为我可以 console.log(obj[0].Name);

我试图在 data: 中返回 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);
                }
            }
		},
        schema: {
        	data: function (response) {
            	console.log(response);
            	var obj = $.parseJSON(response);
                console.log(obj[0].Name);
            	return obj;
        	}
        }
    })
});

【问题讨论】:

    标签: mvvm kendo-ui kendo-datasource


    【解决方案1】:

    Kendo UI MVVM value 绑定不能指向 Kendo UI DataSource 实例。只有source 绑定可以做到这一点。

    在您的情况下,重做您的实现并向 viewModel (app.clientView) 添加一些新字段,这些字段可用于值绑定。 populate这些字段after the DataSource instance receives its data就可以了。

    附带说明,无需通过在绑定配置中包含 viewModel 引用来详细指定 viewModel 字段。您只需要那里的字段名称。检查Kendo UI MVVM demos

    【讨论】:

    • 非常有帮助,但我无法让它发挥作用。如果我在上面的示例中删除了我的列表视图,它似乎是视图模型 data: 和 schema: data;永远不会运行。我添加了一个 Name: 字段并将其设置在 schema: data 中,并且存在 listview 并且它可以工作,而没有 listview 它不会。我添加了一个更改:让 restfull 调用成功,但它永远不会触发。手动调用clientView.data.read();锁定模拟器。尽管如此,我觉得我已经接近了。 :P 我会仔细检查你的答案,那里的好东西丢失了。
    • Kendo UI 数据源不会发出请求,除非数据绑定小部件或开发人员告知它这样做。您所说的锁定可能是一个单独的问题 - 检查 JavaScript 错误。
    • 我不得不解决这个问题,因为我的 rest url 的格式是 .../clients/{id},其中 {id} 取决于之前的视图。最好我能在 url: 中找到 url:当脚本加载时,传输的部分已经解决,早在我设置全局变量 id 之前。解决方法是在视图 onShow 处理程序中调用 loadClient 函数,然后执行典型的 ajax 调用 - 然后使用 jQuery 我设置我的 html 元素 - 以简单和熟悉的方式解决我的问题。我将此标记为答案,因为它是我提出的问题的答案。
    猜你喜欢
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2013-11-07
    相关资源
    最近更新 更多