Javascript 尝试在Backbone.js中设置模型对象时发生TypeError
我一直在使用backbone.js+cordova+require.js框架,这些框架主要基于Cristophe Coenraets。在视图中显示我的模型似乎很简单,但我仍然无法通过调用set或save来更新模型 我的模型看起来像这样:Javascript 尝试在Backbone.js中设置模型对象时发生TypeError,javascript,backbone.js,Javascript,Backbone.js,我一直在使用backbone.js+cordova+require.js框架,这些框架主要基于Cristophe Coenraets。在视图中显示我的模型似乎很简单,但我仍然无法通过调用set或save来更新模型 我的模型看起来像这样: SourcePhrase = Backbone.Model.extend({ // default values defaults: { id: null, markers: "",
SourcePhrase = Backbone.Model.extend({
// default values
defaults: {
id: null,
markers: "",
orig: null,
source: "",
target: ""
},
sync: function (method, model, options) {
if (method === "read") {
findById(this.id).done(function (data) {
options.success(data);
});
}
}
}),
// etc
我可以通过拨打电话获取以下信息,从我的收藏中提取对象:
// find and update the model object
var strID = $(event.currentTarget.parentElement).attr('id');
var model = this.collection.get(strID);
到目前为止,一切顺利:
model.set('target', trimmedValue);
TypeError:“undefined”不是一个函数(正在计算’(i=t[r])。callback.call(i.ctx,n,a)
嗯……那不对。你知道我需要从哪里开始寻找线索吗
编辑:调用set之前模型的控制台输出:
model: Object
_changing: false
_events: Object
_pending: false
_previousAttributes: Object
attributes: Object
id: "RUT001-10"
markers: "\hdr"
orig: null
source: "Ruth"
target: "Ruth"
__proto__: Object
changed: Object
cid: "c15"
collection: Object
id: "RUT001-10"
__proto__: Object
strID: "RUT001-10"
好吧,我想我可能找到了,也许?在我看来,只有一个项目:
initialize: function () {
this.model.bind('change', this.render());
this.render();
},
bind()调用导致了TypeError,这意味着我可能遇到了“this”问题?(.)无论如何,我已经用这个块替换了这个块:
initialize: function () {
this.listenTo(this.model, 'change', this.render);
},
这似乎奏效了。如果有更精通backbone.js的人能对这种方法发表评论,我将非常感谢。我这样做正确吗?是的,这是正确的方法,您甚至可以像这样更改代码:
this.model.bind('change', this.render, this);
它会工作。在
设置
行之前放置一个控制台.log(model)
。输出是什么?@msvalkon:Added。看起来它正在按引用复制(我想这是预期的?)--集合被设置为集合对象。你是对的,我删除了我的答案。嗨,Rida,对不起--bind方法仍然抛出TypeError,即使在将“this”添加为第三个参数时也是如此-/很抱歉,我将this.render()
替换为this.render
尝试了一下,您的代码也可以运行。谢谢