0

Backbone アプリで、ビューの 1 つが期待どおりにレンダリングされません。

ユーザーがルート「test/addtests」をたどると、以下に示す関数が呼び出されます

addtests: function () {

    this.testView = new TestView();
},

ビューは、以下に示す初期化関数を使用して自動的にレンダリングする必要があります

window.TestView = Backbone.View.extend({

    template: _.template($('#test').html()),

    initialize: function () {
        tests.bind("reset", this.render, this);
    },

    render: function (eventName) {
        alert('asdf');
        $(this.el).html(this.template());
        _.each(tests.models, function (test) {
             this.renderSelectBox(test);
         }, this);
        return this;
    },

    renderSelectBox: function (test) {
           var optionView = new TFS.FormOptionView({
               model: test
           });
           $(this.el).append(optionView.render().el);
       },

    events:{
        "click button": "addTest"
    },

    ...ect

});

ただし、何も起こらず、最後のページのコンテンツが表示されるだけです。render 関数で設定したアラートも発生しません。ただし、奇妙なことに、更新をクリックすると、アラートが発生します:S.

ルートは正しく設定されており、「addtests」関数を正しく指していますが、期待どおりにビューを初期化していないようです。

また、私が混乱している 2 番目のことは、完全なコレクションがある場合、get メソッドを使用して単一のモデルを引き出すことができないことです。例えば

players // a full collection

var test = players.get(1);

console.log(test.get('id')); //undefined

:S

4

1 に答える 1

0

おっと、 bind 関数が render を呼び出しているという印象を受けましたが、そうではなかったようです。

私はちょうど置く

this.render();

ビューの初期化関数で、それは機能しました。

上記のコレクションから単一のモジュールを引き出すのに問題がある理由を誰かが知っていますか??

于 2012-07-18T14:08:51.683 に答える