1

question_number「変更がupdateQuestionNumberあった場合question_numberは、 .render() を実行してください」と言いたいと思います。

次のコードの問題は、両方がupdateQuestionNumberANDrenderで実行されることです。

v.QuestionBuilder = Backbone.View.extend({
    initialize: function() {
        this.model.on('change:question_number', this.updateQuestionNumber, this);
        this.model.on('change', this.render, this);
    },
    //only this function should run when question_number is changed
    updateQuestionNumber: function(){
        this.$('.question-number').text(this.model.get('question_number'));
    },
    //this should run when anything except question_number is changed
    render: function() {
        this.$el.html(this.template(this.model.toJSON()));
        this.$el.fadeIn('slow');

        /* blah blah blah */
        return this;
    }
});
4

2 に答える 2

0
initialize: function() {
    this.model.on('change', function(model) {
        var changed = model.getChanged();
        if(changed && 1 === changed.length && changed.question_number) {
            this.updateQuestionNumber();
        } else {
            this.render()
        }
    }, this);
},
于 2012-12-21T21:25:58.003 に答える