6

render 関数で変更されたビューモデルの属性を知るにはどうすればよいですか? (レンダリング関数では、「e」がモデルですが、変更された属性のみが必要です。) どのテンプレートを使用するかを知るために、これを知る必要があります。または、これを行う別の方法はありますか?

window.Person = Backbone.Model.extend({});

window.Njerzit = Backbone.Collection.extend({
    model: Person,
    url: '/Home/Njerzit'
});

window.PersonView = Backbone.View.extend({
    tagName: 'span',

    initialize: function () {
        _.bindAll(this, 'render');
        this.model.bind('change', this.render);
    },

    render: function (e) {
        //if model name is changed, I need to render another template
        this.template = _.template($('#PersonTemplate').html());
        var renderContent = this.template(this.model.toJSON());
        $(this.el).html(renderContent);
        return this;
    }
});
4

2 に答える 2

14

私はchangedAttributes機能があなたが探しているものだと信じています

changedAttributesmodel.changedAttributes([属性])
変更されたモデルの属性のみのハッシュを取得します。オプションで、外部属性ハッシュを渡して、モデルとは異なるそのハッシュの属性を返すことができます。これは、ビューのどの部分を更新する必要があるか、または変更をサーバーに同期するためにどの呼び出しを行う必要があるかを把握するために使用できます。

または、特定の属性が変更されたかどうかを確認するには、hasChanged関数を使用します

hasChangedmodel.hasChanged([attribute])
最後の「変更」イベント以降にモデルが変更されましたか? 属性が渡された場合、その特定の属性が変更されていれば true を返します。

var nameChanged = this.model.hasChanged("name");
于 2011-12-28T21:46:57.667 に答える
12

change:name名前が変更された場合にのみ通知する場合は、バインドできます: http://documentcloud.github.com/backbone/#Model-set

于 2011-12-28T21:59:23.353 に答える