1

在 addone 中,我创建了这样的新视图对象

this.section = "aaa";
var sectionview = new AA(model:this.model,section:this.section);

部分是我传递给 AA 视图的另一个视图的全局变量。但是在传递部分之后,它的值在添加一个这样的末尾得到改变

this.section = "aaa";
var sectionview = new AA(model:this.model,section:this.section);
.
.
.
.
.
.
this.section = "sss";

那么我如何更新在创建视图 AA 时传递的部分的值???预期的答案是

this.options.section = "sss" not "aaa"

在 AA 视图中

4

1 回答 1

3

处理这类事情的常用方法是扩展Backbone.Events构建一个全局发布/订阅事件调度器:

window.pub_sub = _({}).extend(Backbone.Events);

然后您的视图可以侦听来自以下的事件pub_sub

initialize: function() {
    this.listenTo(pub_sub, 'change:section', this.section_changed);
    //...
},
section_changed: function(section) {
    this.section = section;
    // And whatever else needs to happen...
}

然后在更改部分时触发事件:

pub_sub.trigger('change:section', new_section_value);

您希望通过某处的单个函数调用将所有更改集中到全局部分,以确保触发事件,但无论如何您都应该这样做。

演示:http: //jsfiddle.net/ambiguous/rPtfS/

如果您需要保留这些设置,请更改pub_sub为全局设置模型并使用通常的模型持久性机制。

于 2013-05-13T07:16:38.440 回答