0

この [EDIT] [ToDo のサンプル] 1から、[/EDIT] connectOutlet を介して View を接続できます。RC1 を使用した更新された例はありますか?

index: Ember.Route.extend({
  route: '/',
  connectOutlets: function( router ) {

    var controller = router.get( 'applicationController' );
    var context = controller.namespace.entriesController;
    context.set( 'filterBy', '' );

    // This require was left here exclusively for design purposes
    // Loads decoupled controller/view based on current route
    require([ 'app/controllers/todos', 'app/views/items' ],
      function( TodosController, ItemsView ) {
        controller.connectOutlet({
          viewClass: ItemsView,
          controller: TodosController.create(),
          context: context
        });
      }
    );

  }
}),
4

1 に答える 1

0

実際、リンクしている例は機能するはずです。ご存じかもしれませんが、Router API が変更され、pre4 に基づくコードは引き続き機能するはずです。Todos アプリの要件を認識していないため、それでも機能するかどうかを 100% 判断することはできません。

Todos.Router.map(function() {
  this.resource('todos', { path: '/' }, function() {
    this.route('active');
    this.route('completed');
  });
});

Todos.TodosRoute = Ember.Route.extend({
  model: function() {
    return Todos.Todo.find();
  }
});

Todos.TodosIndexRoute = Ember.Route.extend({
  setupController: function() {
    var todos = Todos.Todo.find();
    this.controllerFor('todos').set('filteredTodos', todos);
  }
});

古いルーター APIの変更点の概要を以下に示します。

  • Ember.Router クラスを拡張する必要はもうありません。
  • URL マッピングはルートに存在しなくなりました。これは Todos.Router.map を介して行われます。
  • ルートに connectOutlets イベントはもうありません。代わりに、model()、setupController()、renderTemplate() の 3 つのイベントを実装できます。

フックについての簡単な説明:

  • model() : ルートが URL 経由で入力されたときに一度呼び出されます。これにより、コントローラーのコンテンツになるモデルが返されます。
  • setupController() : ここでコントローラーを取得し、そのコンテンツを好きなように設定できます。デフォルトの実装では、コントローラー、つまりルートに一致する名前が model() の結果に設定されます。
  • renderTemplate() : このフック内では、ルートの新しい render メソッドを使用してレンダリングを行う必要があります。renderメソッドは、どういうわけか、古い connectOutlets に最も一致するメソッドです。デフォルトの実装もあります。そのため、todomvc の pre4 バージョンにも実装されていません。

ミルキーウェイが述べたように、あなたは本当にガイドを読む必要がありますが、これがあなたが少しうまく始められることを願っています.

于 2013-03-09T18:45:46.010 に答える