Backbone.js:通过引用将模型传递给子视图

时间:2012-03-13 14:45:12

标签: reference model backbone.js subview

更新:事实证明,我有一个剩余的this.model = new MasterModel();在我的subViews initialize()函数中。

我试图将我的巨大视图与较小的视图分开,因此我创建了一个“主”布局视图,它将一些子视图附加到自身并将其模型传递给它们。

但是,似乎当我的子视图更新模型时,这些更改不会反映在“主”视图的模型上。

这就是我想要做的事情:

var master = new MasterModel();
var masterView = new MasterView({model:master});

在masterView initialize()函数内部,我这样做:

function: initialize() {
    this.subView = new subView({model:this.model});
}

在subView中更改模型的代码是:

function: setCurrency() {
    this.model.set({ currency: this.$('.currency').val() });
}

也许我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

您的网页上有多少类“货币”?

我认为this.$('.currency').val()意味着你的意思。我想你想要$(this.el).find('.currency').val()之类的东西(你使用的是0.9.1吗?那么你可以将它缩短为$el.find('.currency').val())。你所拥有的将永远抓住页面上的第一项与“货币”类。 this.$只是对通常是全局Zepto或jQuery对象的便利引用。因此,我的问题。

编辑:等待回答澄清问题。

答案 1 :(得分:-1)

让您的模型全局化,而不是:

var master = new MasterModel();

使用

window.master = new MasterModel();

然后将其传递给子视图

function: initialize() {
    this.subView = new subView({model:window.master});
}