渲染需要第二個參數,這是您希望渲染控制器使用的模型。沒有什麼特別的「模型」傳遞給渲染,你可以通過任何東西(例如,對象,對象數組等)
所以,你應該能夠做到:
{{render "popularPosts" tags}}
這將使用popular_posts
模板並實例化PopularPostsController
並將模型設置爲您的標籤數組。然後,您可以訪問tags
在popular_posts模板,就像你通常會:
{{#each}}
{{this}} <!-- this refers to a tag -->
{{/each}}
如果你提供了一個模型,然後{{render}}
將{[render}}
實例化控制器的新實例,而不是使用一個單身,所以你不會需要指定PopularPostsController不是單例。
更新:
這裏是你如何可以建立使用基於您的評論的自包含的部件一個部件的一些信息。
組件是不錯的,因爲你可以設置一堆參數,這樣您的自定義組件:
{{my-component tag=tag sortOrder=sortOrder sortColumn=sortColumn}}
(注意,組件名稱底線轉換,而不是駝峯)
在組件本身你可以搶根據傳遞的數據參數是這樣的:
App.MyComponent = Ember.Component.extend({
getData: function(){
var tag = this.get('tag');
var sortOrder = this.get('sortOrder');
var sortColumn = this.get('sortColumn');
//make your ajax call here to retrieve data
this.set('posts', dataFromAjax);
}.on("init")
});
而不是使用on
事件的風格,你的可以只覆蓋初始化以及這樣的:
App.MyComponent = Ember.Component.extend({
init: function(){
this._super(); //don't forget to call the parent init if you use this method
var tag = this.get('tag');
var sortOrder = this.get('sortOrder');
var sortColumn = this.get('sortColumn');
//make your ajax call here to retrieve data
this.set('posts', dataFromAjax);
}
});
的參數使用組件(具有{{render}}
是不可能的)的時候,所以你可以看到關於sortOrder
和sortColumn
變化而改變使用Ember.computed.sort
職位的排序順序約束:
App.MyComponent = Ember.Component.extend({
getData: function(){
var tag = this.get('tag');
var sortOrder = this.get('sortOrder');
var sortColumn = this.get('sortColumn');
//make your ajax call here to retrieve data
this.set('posts', dataFromAjax);
}.on("init"),
sortProperties: function(){
return [this.get('sortColumn') + ':' + this.get('sortOrder')];
}.property('sortColumn', 'sortOrder'),
sortedPosts: Ember.computed.sort('posts', 'sortProperties'),
});
這非常翔實的博客文章對使用Ember.Computed.sort更多的信息:
http://balinterdi.com/2014/03/05/sorting-arrays-in-ember-dot-js-by-various-criteria.html
像往常一樣灰燼導其實是非常好的,我會建議找過來真正的快速:
http://emberjs.com/guides/components/
我可以通過標籤,就像你顯示,然後用這些標籤在控制器的查詢中獲取真實模型,即帖子? – szimek
當你在一個標籤的頁面上時,該頁面是否有路線?例如'/ tag/1'。如果是這樣,那麼我可能會從路由本身獲取標籤數據。 – Sarus
這取決於。該小部件可以呈現在不同的模板中,例如,那些通過路由'/ videos'或'/ videos /:tag'呈現的。我正在尋找一種方法來創建一個裝載它自己的模型數據的小部件/組件,但是可以傳遞一些額外的數據用作查詢中的過濾器(例如標記名稱,限制,順序等),以便它可以在任何模板中使用,而無需修改其父控制器。 – szimek