【发布时间】:2011-11-06 13:43:42
【问题描述】:
我正在开发一个部分基于 Backbone.js todo example app 的应用程序。一切都运行良好,直到我尝试添加编辑功能。我发现了一些奇怪的行为。
我有某种形式,它创建新的模型对象并将其添加到集合中。当创建新模型(绑定到“添加”事件)时,也会创建新视图并将其添加到 dom。就像在那个 todo 应用程序中一样,它可以工作。
现在我尝试添加编辑功能。我在视图对象方法中创建输入元素并尝试“提交”更改。我首先尝试通过简单地使用 view.model.set 方法更改模型属性来做到这一点。这可行,但会触发一些奇怪的事件。这可能很好,因为我想在模型更改时再次渲染视图。
主要问题:在我看来(工作一个)对象有一个包含此调试行的渲染方法:'console.log(this)'。第一次通过表单创建视图对象时,此行输出正确的对象。当我尝试编辑模型并为其设置新值时,调试打印完全不同的对象。这不起作用,渲染失败。
我希望这些例子就足够了。
主视图:
this.myCollection.bind('add', function(model){
var myView= new myViewRow({
model: model
});
$("#container").find('tbody').append(myView.render().el);
}, this);
在我的视图中:
render: function() {
console.log(this);
var data = this.getAsArray();
$(this.el).html(content);
return this;
}
任何提示我做错了什么?触发了什么事件集方法以及为什么我的渲染方法在错误的对象中?
【问题讨论】:
-
你能发布完整的视图吗?