通过Ajax在两个视图模型中重新加载数据
Reloading data in two viewmodels via Ajax
我有一个应用程序,它有两个视图模型:一个渲染表单,另一个渲染包含表单数据的表。
通过Ajax调用成功保存表单后,将重新加载表。表单也应该重新加载,但我似乎无法实现。基于以下内容,我是否正确地处理了这个问题?
function FormViewModel() {
self = this;
self.loadForm = function () {
...
}
self.save = function () {
success: self.loadForm();
tvm.loadTable();
}
}
function TableViewModel() {
self = this;
self.loadTable = function () {
...
};
}
ko.applyBindings(fvm = new FormViewModel(), document.getElementById("Form"));
fvm.loadForm();
ko.applyBindings(tvm = new TableViewModel(), document.getElementById("Table"));
tvm.loadTable();
我使用了您最初发布的7
版本。这还没有完全发挥作用,但我想我可能已经发现了你的问题:
http://jsfiddle.net/FZ6K6/12/
我看到了两个大问题:
self = this;
你在两个地方这样做。这将创建一个全局变量self
,因此在FormViewModel方法内部,self
实际上是TableViewModel。Ack!简单修复:
var self = this;
此外,当您通过ko.observableArray
创建新的可观察对象时,您需要重新绑定。然而,重新绑定是不好的。相反,您应该只在最初创建可观察到的,然后根据需要更新其值。也就是说,做B.,而不是A.
//A
self.load = function () { self.a = ko.observable(); };
//B
self.a = ko.observable();
self.load = function () { self.a(null); };
相关文章:
- 正在等待呈现图表,直到加载数据为止
- ng绑定和ng href问题.ng href未从控制器加载数据
- 单击按钮时加载数据
- 在reactjs组件中预加载数据
- Highcharts可以从服务器加载数据,但不能更新
- AngularJS promise在加载数据之前得到解决
- 在Knockout JS中搜索从DB加载数据的项目
- 如何在angular js中使用$emit后重新加载数据
- 构建多个图表时,HighCharts加载数据的速度较慢
- 加载初始网站后在后台加载数据
- ExtJS网格未从Ext.data.XmlStore加载数据
- 数据表 AJAX 筛选器重新加载数据
- select2 使用 AJAX 加载数据不能选择任何选项
- 在 Metro 风格应用中启动时加载数据
- 需要帮助使用 AJAX 和其他一些东西加载数据
- Vue 不加载数据
- 向右滚动加载数据
- 为SEO的数据绑定JS预加载数据
- Primefaces在打开新页面时加载数据消息
- 仅在插入或更新新数据时自动刷新/加载数据