我在KendoUI中有与click事件相关的dataSource。我的意思是 - 在将元素的点击ID传递给函数之后,基于id - 为dataSource选择正确的URL。
问题:
我检查并且url正确传递,一切正常,但每个用户的数据都没有改变。因此,例如,如果我点击id为1的用户,我会得到1.json,但是当我点击id为2的用户时,我也会从1.json获取数据。
当我第一次点击id为2的用户时,我得到2.json,点击id为1的用户后,我得到2.json数据。
我如何刷新这些数据?
修改
我忘了添加,函数getData在kendo.observable对象中。我认为可能没有必要说出来,我想尽可能地保持它,但是......好吧,显然它并不那么简单。实际代码:
var myModel = kendo.observable({
getData: function(myDiv,id) {
mySource.transport.options.read.url = id + '.json';
mySource.fetch(function(){
var data = this.data();
var tree = $('<ul></ul>');
$.each(data, function(i,object) {
$('<li>').html('<a href="">'+object.task_name+'</a>').appendTo(tree);
});
tree.appendTo(myDiv);
});
}
};
和getData()
绑定以点击div事件(移动应用)。
答案 0 :(得分:0)
也许你每次都清除myDiv?否则你只是追加到最后而不是清除之前的回复,所以当它得到正确的回应你却没有看到它?
答案 1 :(得分:0)
如果你说url被正确传递,回调中的this
引用可能不会返回预期的内容。如果是这种情况,这将解决它:
function getData(myDiv,id) {
mySource.transport.options.read.url = id + '.json';
var me = this; //Check this
mySource.fetch(function(){
var data = me.data(); //And this
var tree = $('<ul></ul>');
$.each(data, function(i,object) {
$('<li>').html('<a href="">'+object.task_name+'</a>').appendTo(tree);
});
tree.appendTo(myDiv);
});
}
希望这会有所帮助。干杯
答案 2 :(得分:0)
显然获取数据会记住上次响应(?),因此适合我的解决方案是:
var myModel = kendo.observable({
getData: function(myDiv,id) {
mySource.transport.options.read.url = id + '.json';
mySource.read();
mySource.one('change',function(){
var data = this.data();
var tree = $('<ul></ul>');
$.each(data, function(i,object) {
$('<li>').html('<a href="">'+object.task_name+'</a>').appendTo(tree);
});
tree.appendTo(myDiv);
});
}
};
是的,这是mySource.one,而不是'on'。