2013-10-07 57 views
0

在我的主頁中,我有一個ulet watchListView我只是想用單擊鏈接「/ watch_lists」後獲得的視圖替換插座。在ajax響應後在插座上渲染視圖

這是應用程序佈局/代碼模板

<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' }); 

這是在監視列表的路由器代碼

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

我只是想要添加在應用程序模板中的ajax調用後創建的視圖

任何人都可以指出我錯在哪裏。

+0

你可以把一個jsFiddle放在一起嗎? – chopper

回答

0

只要進入此路由,您的視圖就會加載到插座中,直到ajax調用填充爲止,它纔會有數據。將記錄放在renderTemplate函數中,你會看到這個。

我會在您的路由的setupController方法中調用ajax調用,使用該調用的結果填充控制器,以便您可以在視圖中顯示這些結果。有關詳細信息,請參閱此方法的文檔。

在AJAX回調中,您應該使用該調用的結果填充控制器,並在模板中具有指向您要顯示的數據的句柄。

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

你可以看您所關注的模板控制器屬性與{{controller.data.property}}或{{{controller.data.htmlProperty:當Ajax調用回來,並填充控制器就會自動加載}}}來呈現html。

如果這沒有足夠的幫助,發佈一個jsfiddle來說明你現在正在做什麼。