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 に答える