1

私は Backbone.js を使い始めて、特定のビューへのルーティングについて頭を悩ませようとしています。私HTMLには<a href="#project/1">、プロジェクトのタスクのビューをレンダリングするためのタグがあります。

クエリ

リンクをクリックすると、タスクが にid追加DOMされますが、2 番目のリンクをクリックすると、そのタスクが前のリンクの下に追加されます。ビューのベストプラクティスがメソッド$.emptyを呼び出すかどうかわかりませんか?show

私のルーターのスニペット:

routes: {
    'project/:id: 'showtasks'
},

showtasks: function(id) {
   Event.trigger('tasks:show', id);
}

タスクのコレクションのスニペット

initialize: function() {
    Event.on('tasks:show', this.show, this);
},

show: function() {
    var task = this.collection.get(id);
    var taskView = new App.Views.Task({ model: task });
    this.$el.append(taskView.render().el);
}

コレクション

var tasks = new App.Collections.Tasks([
    {
        id: 1,
        title: 'First Task',
        content: 'Lots of Content...'
    },
    {
        id: 2,
        title: 'Second Task',
        content: 'Lots of Content...'
    },
    {
        id: 3,
        title: 'Third Task',
        content: 'Lots of Content...'
    }
]);

var tasksView = new App.Views.Tasks({ collection: tasks });
4

1 に答える 1

2

バックボーンビューの優れたデザインパターンは次のとおりです。

  • メソッドを複数回呼び出しrenderても、副作用はありません。正しくレンダリングされるはずです。

  • レンダリングで使用する場合append、基本的にはレンダリングメソッドでビューのフローを設定します。これは基本的にビューのテンプレートの責任です。

だから私はあなたがこれを使うべきであることを提案します>

this.$el.html(taskView.render().el);

これは完全に正常に機能しますが、サブビューがある場合は問題が発生します。そのためにこれを読んでください-(基本的にこの全体の答えはこの記事の恥知らずなリップオフです:P)

于 2013-03-19T07:52:15.503 に答える