Javascript 更改源时,数据源中的数据不会刷新

Javascript 更改源时,数据源中的数据不会刷新,javascript,jquery,ajax,kendo-ui,Javascript,Jquery,Ajax,Kendo Ui,我在KendoUI中有一个与点击事件相关的数据源。我的意思是,在元素的click ID传递给函数之后,函数会根据ID为数据源选择合适的url 问题: 我检查并正确传递了url,一切正常,但每个用户的数据并没有改变。例如,如果我点击id为1的用户,我会得到1.json,但当我点击id为2的用户时,我也会从1.json得到数据 当我第一次单击id为2的用户时,我得到了2.json,当我单击id为1的用户后,我得到了2.json数据 如何刷新此数据 编辑: 我忘了添加,函数getData在kendo.

我在KendoUI中有一个与点击事件相关的数据源。我的意思是,在元素的click ID传递给函数之后,函数会根据ID为数据源选择合适的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);
        });
    }
};
var myModel=kendo.observable({
getData:函数(myDiv,id){
mySource.transport.options.read.url=id+'.json';
fetch(函数(){
var data=this.data();
变量树=$(“
    ”); $.each(数据、函数(i、对象){ $('
  • ).html(').appendTo(树); }); 树。附属物(myDiv); }); } };

  • 并且
    getData()
    绑定为单击div事件(移动应用程序)在这种情况下,这将解决它:

    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);
        });
    }
    
    函数getData(myDiv,id){ mySource.transport.options.read.url=id+'.json'; var me=this;//检查这个 fetch(函数(){ var data=me.data();//这个 变量树=$(“
      ”); $.each(数据、函数(i、对象){ $('
    • ).html(').appendTo(树); }); 树。附属物(myDiv); }); }
      希望这能有所帮助。干杯

      显然,获取数据会记住上次的响应(?),因此对我有效的解决方案是:

      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);
              });
          }
      };
      
      var myModel=kendo.observable({
      getData:函数(myDiv,id){
      mySource.transport.options.read.url=id+'.json';
      mySource.read();
      mySource.one('change',function(){
      var data=this.data();
      变量树=$(“
        ”); $.each(数据、函数(i、对象){ $('
      • ).html(').appendTo(树); }); 树。附属物(myDiv); }); } };

      • 是的,它是mySource.one,不是“on”。

        emm不是,它现在只显示对象没有方法“data”。我认为数据有问题()部分,在控制台中,它显示正在加载正确的源代码。我没有清除div等。尝试用jsbin示例演示您的情况,代码看起来一切正常。我找到了解决方案。不知道是添加答案还是编辑我的问题?添加答案并将其标记为已解决。