将更改事件绑定到backbone.js中的模型

时间:2011-10-10 22:23:24

标签: backbone.js

我正在尝试将更改事件绑定到模型,但是无法正常工作。这是链接:http://jsfiddle.net/kahhor/jp4B6/2/。我想,我正在做一些愚蠢的错误,我无法弄明白。

我认为问题在于它是两种不同的观点......

抱歉,在backbone.js中新建,只是学习:)。

谢谢,

更新:我改变了调用视图和模型的方式:

/* MODELS */
    var PopupM              = new PopupModel();
    var TaskbarM            = new TaskbarModel();
    var LeftNotificationM   = new LeftNotificationModel();
    /* /MODELS */

    window.PopupView = new PopupView({model: PopupM, LeftNotificationModel: LeftNotificationM});

    window.TaskbarView = new TaskbarView({model: TaskbarM});
    window.TaskbarView.loadTaskbar();

    window.LeftNotificationView = new LeftNotificationView({model: LeftNotificationM});
    window.LeftNotificationView.loadLeftNotification();

一切正常,除非我正在调用decrementNotification()
Firebug中显示此错误消息:

this.LeftNotificationModel is undefined
  this.LeftNotificationModel.decrementNotification(); 

但我已在此声明:

window.PopupView = new PopupView({model: PopupM, LeftNotificationModel: LeftNotificationM});

我在这里做错了什么? :(

2 个答案:

答案 0 :(得分:3)

我看到你想要根据一个模型的状态改变两个视图的行为。

我不太确定PopupModel应该做什么,所以我省略了它。

基本上,您希望创建一个模型LeftNotificationModel并将其传递给选项参数中的两个视图。

var my_model = new LeftNotificationModel();

window.LeftNotificationView = new LeftNotificationView({ model: my_model});
window.LeftNotificationView.render();
window.PopupView = new PopupView({ model: my_model});
window.PopupView.render();

请参阅JSFiddle以获取正在运行的示例:http://jsfiddle.net/dj4cp/1/

答案 1 :(得分:1)

响应您的修改,这确实是一个新问题:

不要忘记将decrementNotification绑定到您的对象:

initialize: function() {
    _.bindAll(this, "decrementNotification");
}