2013-02-28 66 views
0

我可以很好地處理這個錯誤的方式,所以請建議替代品,如果是這種情況。動態插入視圖

可以說,我有一個集合視圖顯示許多事件

App.EventsView = Ember.CollectionView.extend({ 
    contentBinding: "controller.content", 
    itemViewClass: Ember.View.extend({ 
    templateName: "event" 
    }) 
}) 

的視圖模板:

<div class="event">{{ view.content.name }}</div> 

並將其加載到應用程序

{{#if content.isLoaded}} 
    {{ view "ScheduleApp.EventsView" }} 
{{else}} 
    Loading... 
{{/if}} 

現在這非常適合顯示事件列表,但我想將這些事件插入到dom依賴的部分中關於他們的屬性。基本上我想在這些視圖上調用appendTo,但是它們隱含地由我希望保留的燼魔產生。這是可能的還是我將不得不明確定義這些視圖,如果是的話,我將如何做到這一點,以保持與EventsController內容同步的一切?

回答

1

您可以以編程方式設置應該爲每個元素使用哪個視圖。這將允許您根據其屬性更改dom。

查看API部分中的PROGRAMATIC CREATION OF CHILD VIEWS

希望有所幫助。


如果你正試圖把這些放到頁面的不同部分,而不是剛上市的出來,那麼我可能會建議尋找到control幫手。

如果是這種情況,您可以提供一些有關DOM中哪些位置可能被使用的示例的信息嗎?不同的控制器一起處理它們可能會更好嗎?

+0

感謝您的回答。可以說我正在製作一個基本的日曆應用程序。它有7天,每個都有自己的「專欄」或欄目。想過它聽起來好像我有7天的DaysController。然後每一天都會有事件發生。我想我仍然在努力處理這個只有每個控制器的一個實例的概念。如何在7個地方使用Events控制器而不更改內容?事實上,改變內容的問題還是EventsController仍然意識到其他事件已經改變了內容? – 2013-03-01 04:47:46

+0

是的,我有類似的問題。我結束了使用'控制'幫手,讓我有一個單獨的控制器爲每個模型需要處理。我需要查看「CollectionView」並更好地理解這一點。 [Here](http://jsbin.com/uxodex/3/edit)是我用'control'做了一段時間的一個小例子。 – RyanJM 2013-03-01 14:21:04

2

假設你已經活動的列表,每個事件都有一個類型的屬性和類型會說 研討會,音樂會和體育

App.EventsController的內容具有的所有事件

App.EventsController = Ember.ArrayController.extend({ 
    seminars: function(){ 
    return this.get("content").filterProperty("type", "seminar"); 
    }.property("[email protected]") 
    concerts: function(){ 
    return this.get("content").filterProperty("type", "concerts"); 
    }.property("[email protected]"), 
    sports: function(){ 
    return this.get("content").filterProperty("type", "sports"); 
    }.property("[email protected]") 
}) 

App.BaseEventView = Ember.CollectionView.extend({ 
    itemViewClass: Ember.View.extend({ 
    templateName: 'event' 
    }) 
}) 

App.SeminarsView = Ember.BaseEventView.extend({ 
    contentBinding: 'controller.seminars' 
}) 

App.ConcertsView = Ember.BaseEventView.extend({ 
    contentBinding: 'controller.concerts' 
}) 

App.SportsView = Ember.BaseEventView.extend({ 
    contentBinding: 'controller.sports' 
}) 

App.EventsView = Ember.View.extend({templateName: 'events'}); 

<script type="text/x-handlebars" data-template-name="events"> 
    {{#if content.isLoaded}} 
    {{view App.SeminarsView}} 
    {{view App.ConcertsView}} 
    {{view App.SportsView}} 
    {{else}} 
    Loading... 
    {{/if}} 
</script> 

現在一切都與控制器的內容同步感謝計算屬性

+0

content.type究竟做了什麼?...我沒有看到它作爲一個屬性任何地方... – thecodejack 2013-03-01 10:52:30

+1

感謝您指出,它的內容。@ each.type – 2013-03-01 10:55:08

+0

好吧,這是有道理的。現在該如何處理事件類型變量的情況。比方說,事件類型是用戶定義的,我不知道有多少,也不知道它們叫什麼。 – 2013-03-01 16:39:21