backbone.js获取json成功不会命中
我使用fetchfrom backbone.js加载json模型,但不会成功backbone.js获取json成功不会命中,json,backbone.js,fetch,Json,Backbone.js,Fetch,我使用fetchfrom backbone.js加载json模型,但不会成功 var DialogModel = Backbone.Model.extend({ url : function() { return '/messages/getDialog'; }, parse : function(res) { return res.dialog; } }); var DialogView = Backbone.View.ext
var DialogModel = Backbone.Model.extend({
url : function() {
return '/messages/getDialog';
},
parse : function(res) {
return res.dialog;
}
});
var DialogView = Backbone.View.extend({
el: $("#page"),
initialize: function() {
var onDataHandler = function() {
this.render();
};
this.model = new DialogModel();
this.model.fetch({ success : onDataHandler});
},
render: function(){
var data = {
dialogModel : this.model
};
var form = new Backbone.Form({
model: data
});
$(this.el).html(form.render().el);
}
});
现在发生了什么:
调用DialogView初始化。
调用this.model.fetch,但如果成功,则不会命中onDataHandler函数。
/messages/getDialog将返回一个json文件。
json文件正在加载,正如我在网络浏览器中看到的那样
谢谢你的帮助!
Oleg您遇到的问题是由于一个典型的JS gotcha,而与主干网本身无关。试一试
var that = this;
this.model.fetch({
success : function () {
that.render();
}
});
当前传递onDataHandler
的方式有问题,因为调用函数时会导致此
引用全局对象,而不是对话框视图
这说明了有问题的版本与有效的版本
(您可能还想看看JS,它可以保护您免受此类错误的影响。)您遇到的问题是由于一个典型的JS问题,与主干网本身无关。试一试
var that = this;
this.model.fetch({
success : function () {
that.render();
}
});
当前传递onDataHandler
的方式有问题,因为调用函数时会导致此
引用全局对象,而不是对话框视图
这说明了有问题的版本与有效的版本
(您可能还想看看JS,它可以保护您免受此类错误的影响。)更好的方法是监听事件:
this.model.on("sync", this.render).fetch();
我在寻找其他问题时遇到了这个问题,但目前被接受的答案让我发疯。没有充分的理由把这个
和那个
撒在你的代码上。主干(下划线)包括一个可以绑定到的上下文参数
that=this
毫无意义。如果必须实施过时的2007年Crockford模式,那么说var self=this
。说that=this
就像说left=right
。每个人都停下来。更好的方法是倾听事件:
this.model.on("sync", this.render).fetch();
我在寻找其他问题时遇到了这个问题,但目前被接受的答案让我发疯。没有充分的理由把这个
和那个
撒在你的代码上。主干(下划线)包括一个可以绑定到的上下文参数
that=this
毫无意义。如果必须实施过时的2007年Crockford模式,那么说var self=this
。说that=this
就像说left=right
。大家都停下来