繁体   English   中英

如何重用Kendo UI远程绑定数据源(更改transport.read.data然后刷新)

[英]How to reuse kendo ui remote binding datasource (change transport.read.data then refresh)

我想问问是否可以重用远程绑定kendo.data.Datasource而不是使用新参数创建新的绑定。

我的情况是我有一个搜索框和一个列表视图。 用户输入搜索框时,带有搜索框值参数的请求将发送到服务器。 我可以通过在每个keyup事件中创建新的kendo.data.Datasource来使其正常工作,但是内存成为我的关注点。

 var viewModel = kendo.observable({ searchId: "", // searchbox value searchResult: null, // search result listview datasource searchFnc: function() { // search function // QUESTION: is there any way to update the current datasource object // to refresh the list view instead of create new object? // something like: // this.set("searchResult.options.transport.read.data.postId", this.get("searchId")); this.set("searchResult", new kendo.data.DataSource({ transport: { read: { url: "http://jsonplaceholder.typicode.com/comments", dataType: "jsonp", data: { postId: this.get("searchId") } } } })); } }); kendo.bind($("#myView"), viewModel); 
 .item { list-style: none; } .item span { display: inline-block; min-width: 40px; } #myListView { min-height: 50px; } 
 <link href="https://kendo.cdn.telerik.com/2016.1.112/styles/kendo.common.min.css" rel="stylesheet" /> <link href="https://kendo.cdn.telerik.com/2016.1.112/styles/kendo.default.min.css" rel="stylesheet" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="https://kendo.cdn.telerik.com/2016.1.112/js/kendo.all.min.js"></script> <div id="myView"> <label>Enter Post ID (1,2,3,4...) <label> <br/> <span class="k-textbox k-space-right"> <input type="text" data-value-update="keyup" data-bind="value: searchId, events: {keyup: searchFnc}"/> <a href="javascript:;" class="k-icon ki-search" data-bind="click: searchFnc">&nbsp;</a> </span> <ul id="myListView" data-role="listview" data-bind="source: searchResult" data-template="template-search-result"> </ul> </div> <script type="text/x-kendo-template" id="template-search-result"> <li class="item"> <span>#: postId #</span> <span>#: id #</span> <span>#: name #</span> </li> </script> 

那这个呢? change-datasource-url-grid 它使用的功能类似于options.transport.read.url的功能( options.transport.read.url )。 然后用.refresh()更新。

这就是我会做拨弄

var viewModel = kendo.observable({
    searchId: 1,
    searchResult: new kendo.data.DataSource({
        transport: {
            read: {
                url: function() {
                    return "https://jsonplaceholder.typicode.com/" + viewModel.get("searchId") + "/comments"
                },
                dataType: "jsonp"
            }
         }
    }),
    searchFnc: function() {
        this.searchResult.read();
    }

});

kendo.bind($("#myView"), viewModel);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM