2014-01-11 73 views
0

我在KendoUI中使用单击事件连接了dataSource。我的意思是 - 在单击元素ID后传递给函数,基于id的 - 为dataSource选择适当的url。当数据源发生变化时,dataSource中的数据不会刷新[解决]

问题:

我检查和网址,正确传递,一切工作正常,但对于每个用户的数据不会改变。因此,例如,如果我点击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

试着用jsbin例子来演示你的情况,一切都看起来正确的代码。 –

+0

我找到解决方案。不知道是否添加答案或编辑我的问题? – mmmm

+0

添加答案并将其标记为已解决。 –

回答

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,而不是“开”。

0

也许你每次都清理myDiv吗?否则,你只是追加到最后而不清除以前的响应,所以当它得到正确的响应时,你没有看到它?

+0

我认为data()部分有问题,它在控制台中显示正在加载正确的源代码。而且我没有清除div等 – mmmm

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); 
    }); 
} 

希望这会有所帮助。干杯

+0

emm nope,它现在只显示对象没有方法“数据”。 – mmmm

相关问题