我遵循MVC4 SPA演练的例子,并创建了一个简单的应用程序,其中我拉下10个主题的列表,让用户标记为安全或不良,然后保存更改。现在,当用户保存更改时,我想重新加载列表,其中包含接下来要处理的10个主题。我将如何做到这一点?提交更新结果数据源后刷新淘汰赛模型
这是我的观点的数据模型:
function TopicsViewModel() {
// Data
var self = this;
self.dataSource = upshot.dataSources.UnsafeTopics.refresh();
self.topics = self.dataSource.getEntities();
// Operations
self.saveAll = function() {
self.dataSource.commitChanges();
}
self.revertAll = function() {
self.dataSource.revertChanges();
}
}
查看:
@(Html.UpshotContext(bufferChanges: true).DataSource<TopicDataController>(x => x.GetUnsafeTopics()))
<button id="saveAll" data-bind="click: saveAll">Commit changes</button>
<ul data-bind="foreach: topics">
<li data-bind="css: { updated: IsUpdated }">
<strong class="topicItem" data-bind="text: TopicName"></strong>
<label><input class="bad" type="checkbox" data-bind="checked: IsBad" /> is bad</label>
<label><input class="safe" type="checkbox" data-bind="checked: IsSafe"/> is safe</label>
</li>
</ul>
<script src="~/Scripts/App/TopicsViewModel.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
ko.applyBindings(new TopicsViewModel());
});
</script>
控制器:
public class TopicDataController : DbDataController<SocialViewEntities>
{
public IQueryable<Topic> GetUnsafeTopics()
{
return DbContext.Topics.Where<Topic>(t => t.IsBad == false).Where<Topic>(t => t.IsSafe == false).Take<Topic>(10);
}
public void UpdateTopic(Topic topic) { UpdateEntity(topic); }
}