0

私のホームページには oulet watchListView があります。アウトレットを、リンク「/watch_lists」をクリックした後に取得しているビューに置き換えたいだけです。

これは、アプリケーションのレイアウト/テンプレートのコードです

 <div id='main-outlet'>
  {{outlet}}
  <div class="watch-list-rght"><a href="/watch_lists"><i class="icon-eye-open"></i></a>  </div>
 </div>
 {{outlet watchListView}}

これはアプリケーションルートのコードです

 this.resource('watchList', { path: '/watch_lists' });

これは WatchList ルーターのコードです

 Discourse.WatchListRoute = Discourse.Route.extend({
   redirect: function() { Discourse.redirectIfLoginRequired(this); },
   renderTemplate: function() {
     this.render('watch_lists', { into: 'application', outlet: 'watchListView' });
   } 
 });

アプリケーション テンプレートで ajax 呼び出しの後に作成されたビューを追加したいだけです

誰が私が間違っているかを指摘できますか。

4

1 に答える 1

0

ビューは、このルートに移動するとすぐにアウトレットにロードされます。ajax 呼び出しによってデータが入力されるまで、データはありません。ロギングを renderTemplate 関数に入れると、これが表示されます。

ルートの setupController メソッドで ajax 呼び出しを行い、その呼び出しの結果をコントローラーに入力して、それらの結果をビューに表示できるようにします。詳細については、このメソッドのドキュメントを参照してください。

AJAX コールバックでは、その呼び出しの結果をコントローラーに入力し、表示するデータを指すテンプレートにハンドルバーを設定する必要があります。Ajax 呼び出しが戻ってきてコントローラーにデータが入力されると、自動的に読み込まれます。

setupController:function(controller){
    someObj.AjaxCall(function(data){
        controller.set('data',data);
    }
}

{{controller.data.property}} または {{{controller.data.htmlProperty}}} を使用して、watchList テンプレートでコントローラーのプロパティを監視し、html をレンダリングできます。

これが十分に役に立たない場合は、現在行っていることを示す jsfiddle を投稿してください。

于 2013-10-11T01:54:29.627 に答える