2012-11-27 38 views
0

我想實現Bootstrap Collapse(該簡單可摺疊在本節結束時)使用Ember.View 我無法找到綁定的視圖ID的方式,

collapse.handlebars綁定燼產生elementId,灰燼+引導摺疊

<button type="button" class="btn btn-danger" data-toggle="collapse" {{bindAttr data-target="view.contentId"}}> 
    simple collapsible 
</button> 

{{view view.collapseContentView class="collapse in"}} 

筆者認爲:

App.CollapseView = Ember.View.extend({ 

    templateName: 'collapse', 

    collapseContentView: Ember.View.extend({ 
    template: Ember.Handlebars.compile("Collapse body text") 
    }), 

    contentId: function(){ 
    return "#"+this.get('collapseContentView.elementId') 
    }.property() 

}) 

我不想手動設置ID,而是想使用生成的一個,所以這不起作用的任何理由?

+0

如果你可以把JSFiddle放在一起,那將會容易得多。看看代碼,我認爲你需要使'contentId'屬性依賴於'collapseContentView.elementId'。 –

+0

我會很快提出一個小提琴,&我認爲依賴項導致「超出最大調用堆棧大小」錯誤,這就是爲什麼我刪除它... –

回答

1

collapseContentView是一個視圖類(extend),在您將其實例化之前不會有elementIdcreate)。

在模板中,當你做{{view view.collapseContentView}}將創建視圖的新實例,但它不會改變的view.collapseContentView的價值,它仍然是一類,因此view.collapseContentView.elementId將沒有意義。

我會推薦使用Ember.ContainerView,這是以編程方式控制視圖的好方法。以下是使用容器視圖來處理兩個視圖之間的事件的示例:http://www.emberplay.com#/workspace/1140286638

+0

確切地說,問題是擴展與當我試着Ember.View.create ()我不能使用{{view view.myView}}我需要在這種情況下做一個append()我猜,containerView是我一直在尋找的感謝:) –