Я хочу спросить, можно ли повторно использовать удаленное связывание kendo.data.Datasource
вместо создания нового с новыми параметрами.Как повторно использовать kendo ui remote binding datasource (change transport.read.data, затем обновить)
Мой сценарий заключается в том, что у меня есть окно поиска и вид списка. Когда пользователь вводит в поле поиска, запрос отправляется на сервер с параметром значения поля поиска. Я смог сделать это отлично, создав новый kendo.data.Datasource
каждый случай keyup
, но память стала для меня проблемой.
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 k-i-search" data-bind="click: searchFnc"> </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>
Я фактически попробовал это на первый, но не работает. Может быть, потому, что я использую listview? –