0

私は次のモデルを持っています:

    App.Item = Backbone.Model.extend({
            urlRoot : '/item',
            // Default attributes
            defaults: {
                user_has_liked: false,
            },
            initialize: function(){
                this.on('item-id-changed', this.onItemIdChange);
            },
          onItemIdChange: function(itemId){
            console.log('item id change');
            this.set({'id': itemId});
            var that = this;
            this.fetch({
                success: function (item) {

                }
            })  
        },

クリック時に次のトリガー:

このモデルがバインドされているビューではない私の他のビューでは:

loadNewItem: function(ev) {
        ev.preventDefault();
        var self =  $(ev.currentTarget);
        var itemId = $(self).attr('data-item-id');
        //trigger a new event for listener
        if (itemId) {
            console.log('triggger');
            this.trigger('item-id-changed', itemId);
        }
    },

なぜそれonItemIdChangeは決して呼び出されないのですか?

4

3 に答える 3

0

これを変更してみてください:

this.on('item-id-changed', this.onItemIdChange);

これに:

this.on('change:item-id-changed', this.onItemIdChange, this);
于 2013-09-12T06:16:26.847 に答える
0

これをビューで書いている場合、

使用するthis.model.trigger('item-id-changed', itemId);

ここでthisはビューを参照するため、モデルを参照する必要があります (モデルをトリガーするのが正しい方法です)。

于 2013-09-12T07:08:12.610 に答える