0

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

    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 打印到控制台。我找不到问题,但我很确定视图不会监听更改事件,但为什么呢?感谢帮助。

4

1 回答 1

0

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

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

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

于 2013-07-22T09:02:02.033 回答