更新传递给Backbone视图的值

时间:2013-05-13 06:54:26

标签: backbone.js

在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视图中

1 个答案:

答案 0 :(得分: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更改为全局设置模型,并使用通常的模型持久性机制。