我很难调试我创建的这个无限循环。在 Knockout.js 中,我使用data-bind="event:{change:save_data}"
标记绑定了几个元素的更改事件。然后在save_data
函数上,我让它运行一个 ajax PUT 到服务器。
var ViewModel = function(config) {
var self = this;
// initial call to mapping to create the object properties
ko.mapping.fromJS(config, {}, self);
self.save_data = function() {
$('#ajax-console').append('<p>Saving...</p>');
$.ajax({
url: '/echo/json/',
data: ko.toJS(self),
type:'put',
success: function(data) {
},
dataType: 'json'
});
}
};
运行它并更改输入或复选框会在 Chrome 中给我以下错误:RangeError: Maximum call stack size exceeded
.
我究竟做错了什么?显然,AJAX 调用中的某些内容正在更改该字段的值之一。一种解决方法是检测 AJAX 调用是否已经在路由中并且不调用它,但我想了解发生了什么。
这是我的小提琴:
破例:http: //jsfiddle.net/btV9t/10/
工作示例:http: //jsfiddle.net/btV9t/8/
谢谢大家。