无法在viewModel中更新dataSource.at(0)

时间:2014-09-20 11:34:23

标签: kendo-ui telerik everlive

在我的viewModel中,我将user-property绑定到userDataSource.at(0):

vm.set('userDs',userDataSource);
userDataSource.fetch(function(){
   vm.set('user', userDataSource.at(0));
});

只要我使用用户数据,这就可以正常工作。但是当我尝试更新数据时,它并不起作用。

vm.user.set('DisplayName','John Doe');
vm.userDs.sync();

这不起作用。问题是vm.user现在已更新,但vm.userDs的第一个元素未更改。看起来用户不是指向userDs中第一个元素的指针,而是第一个元素的副本。

如果我这样做,它会起作用:

vm.userDs.at(0).set('DisplayName','John Doe');
vm.userDs.sync();

但这是一个非常丑陋的解决方法。我希望vm.user成为指向userDs中元素的指针。

1 个答案:

答案 0 :(得分:1)

原因是这不起作用的原因是因为我在定义后更改了dataSource的过滤器。

userDataSource = {
   ...
}
userDataSource.filter({/*filter config*/});

在userDataSource定义中移动过滤器解决了问题:

userDataSource = {
   ...
   filter: {/*filter config*/}
}

我仍然不完全理解为什么会产生这么大的差异,但至少我知道如何解决它。