2013-02-20 61 views
1

我正在与淘汰赛和jquery与asplnet mvc。我使用控制器中返回的json对象的knockout应用绑定。这是适用于我的标记。重新jin对象与淘汰赛js

如果用户点击屏幕上的按钮,我会调用控制器操作并再次从服务器检索数据。

在这一点上,我是否需要重新绑定我的新json对象来淘汰或如何处理?

回答

0

我假设当用户单击按钮并调用控制器动作时,您将这样做为AJAX回发而不是整个页面刷新。如果这是正确的,那么不,你不需要重新绑定你的新的json对象。你只需要使用你的新的json对象来更新你的视图模型,淘汰赛将负责其余的部分。它的工作方式如下:

当您的页面最初加载时,您的页面有一个从控制器返回的javascript对象。如果这个对象变成一个对应的对象,其中所有的属性都是knockout observables和observableArrays,那么在应用knockout绑定之后,您可以获得持续的双向数据绑定(即从模型到页面,从页面到模型) 。

将您的JavaScript对象转换为其中所有属性都是可敲击的观察对象的最简单方法是使用knockout mapping plugin。完成此操作后,您将使用knockout applybindings方法将其绑定到您的页面。

所以在初始页面加载,这可以如下设置:

//load your data 
var data = ... some code to retrieve your data 
//convert this into a viewmodel having knockout observables as properties 
MyPage.ViewModel = ko.mapping.fromJS(data); 
//bind this viewmodel to all knockout bindings 
ko.applyBindings(MyPage.ViewModel); 

现在,当一个AJAX调用时,新的数据被检索到,当你更新视图模型,淘汰赛将自动更新UI:

//AJAX call is made 
var newdata = ... results from AJAX call 
//Update viewmodel 
MyPage.ViewModel.Property1(newdata.Property1); 
MyPage.ViewModel.Property2(newdata.Property2); 
...other properties... 
...UI is automatically updated by knockout 

一旦更新了视图模型,UI将自动刷新,这要归功于knockout的双向数据绑定。所以你只需要更新你的视图模型,淘汰赛将自动应用它的绑定并照顾更新UI。