Ajax响应并没有改变我的视图模型
Ajax response is not changing my viewmodel
我绑定了一个值和一个列表,并希望在Ajax回调中对其进行更改。我在.get()
中检索一个新值,但当.get()
的回调实际发生时,并且我将检索到的值分配给视图模型的属性时,UI不会刷新。这是我的代码:
function SearchViewModel() {
this.count = ko.observable(count);
this.list = ko.observableArray(list);
//I had count and list before I assigned.
this.addPage = function() {
var form = $('#form');
var serializedData = form.serialize();
$.get("{% url 'search:search' %}", serializedData, function(response){
console.log(this.count); // it's undefined here.
this.count = response.count;
console.log(this.count); // it's the value I want to updated, e.g. 20. But UI is not refreshedenter code here
});
};
}
我也想在回调中更新一个列表,但现在甚至一个简单的count
值都没有更新。我在stackoverflow上读到了许多相关的解决方案,并尝试了几个,但都不起作用。
尝试:
this.count(response.count);
这就行了。
有关可观测性的更多信息,请查看http://knockoutjs.com/documentation/observables.html
您的代码中还存在潜在的范围问题。当你在回调中引用这个时,你不能保证你得到了viewModel的作用域。因此,您应该在回调之外添加以下行:
var self = this;
在回调中,您应该更改为:
self.count(response.count);
相关文章:
- 如何在视图模型contet更新更新上调用Jquery函数
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- 在MVVM视图模型中处理应用程序范围的元素
- 将c#视图模型转换为javascript模型时转义HTML标记
- 使用knockout.js将数组绑定到视图模型
- 将js对象更改为使用嵌套的可观察数组敲除js视图模型
- 聚合物:在不同的视图模型中多次使用元素
- 使用AMD时未定义淘汰组件视图模型
- 如何在Knockout.js中选中复选框时更新视图模型及其依赖项
- 无法将对象列表从视图模型设置为 javascript 变量
- 挖空视图模型函数仅影响最后一个实例
- 挖空.js嵌套视图模型不起作用
- 为什么我的视图模型不起作用
- 挖空、视图模型位于其他对象和数据绑定中
- 如何将经度/经度值绑定到挖空视图模型方法
- 挖空.js:等待视图模型实例化完成
- 在Knockout视图模型中调用jQuery插件是一种有效的模式
- KnockoutJS:如何避免在applyBindings上运行视图模型函数
- 使用knockoutjs操作视图模型
- Kendo UI自定义验证不适用于模板和视图模型