为什么视图不听模型事件

时间:2013-07-22 08:20:01

标签: javascript jquery events backbone.js

我有一个基本模型,例如:

    define(['backbone', 'relational'], function(Backbone, Relational) {
        var resultEntityModel = Backbone.RelationalModel.extend({
            defaults : {
                bgOccurence : "",
                fgOccurence : "",
            },
            initialize : function() {                   
                var bgOccurence = this.set("bgOccurence",this.get("bgOccurence"));       
                var fgOccurence = this.set("fgOccurence",this.get("fgOccurence"));
            }
        });

        return resultEntityModel;
    });

观点:

define(['marionette', 'js/models/result/result.entity.model', 'text!templates/result/result.entity.panel.html'], function(Marionette, ResultEntityModel, ResultEntityPanel) {
    var resultEntityView = Marionette.CompositeView.extend({
        tagName : "tr",
        template : ResultEntityPanel,
        initialize: function () {
            this.model.on("change:fgOccurence", function() { console.log("hello"); });
      }                      
    });
    return resultEntityView;
});

但是这段代码不会向控制台打印hello。我找不到问题,但我很确定观看不听变化事件,但为什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

当您将模型传递给视图时,它已经初始化,属性设置,触发更改事件。 尝试创建模型的实例(没有使用requirejs语法,只是基于局部变量的伪代码):

var model = new resultEntityModel();
var view = new resultEntityView({model: model});
model.set('bgOccurence', 'new value to bg');

现在你可以看到控制台日志。