我最近一直在玩Knockout,我正试图用订阅ko计算的可观察对象来替换$(").change处理程序。
我遇到的问题是,当我在带有knockout的计算可观察对象中进行ajax调用时,firebug不会破坏调试器关键字或成功回调中的任何断点,但当ajax在$().change处理程序中触发时,它可以正常工作。
虽然代码似乎可以工作,但我很想看看是否有人知道它为什么不在断点处停止?
这是原始代码,它在成功回调时中断良好:
$("#textarea").change(function() {
$.ajax({
//code elided
success : function(response){
debugger
alert(response);
};
});
});
这是淘汰赛中的代码。
function ViewModel(){
var self = this;
self.textValue = ko.observable();
self.throttledValue = ko.computed(this.textValue)
.extend({ throttle: 400 });
this.throttledValue.subscribe(function (val) {
if (val !== ''){
$.ajax({
//code elided
success : function(response){
debugger
alert(response);
};
});
}
});
};
我希望以上能说明我在做什么。
本质上,两者都会显示带有ajax调用响应的警报,因此我们知道正在调用success函数,但只有第一个函数会在"调试器"上停止。
有人能揭露这种行为吗?这与它在订阅可观察到的节流值有关吗?
同样,代码仍然有效,只是想看看是否有人知道为什么没有达到断点。
我想您进行跨域调用时,它们会无声地失败。我创建了一个使用ajax调用同一域的示例,一切都很好。在Chrome、IE、FF 中验证
试试看http://jsfiddle.net/Hju2v/2/