2013-10-25 99 views
0

我試圖在我的餘燼應用程序中添加引導模式。我希望能夠添加指定模板並能夠處理操作的模塊。我無法得到它的作品。模態出現,我的控制器的屬性被綁定,但我無法處理動作。我不明白爲什麼。我真的希望能夠從我的控制器的任何地方觸發模態,並將動作綁定在它們上。視圖中的EmberJs {{action}}幫助不起作用

我的看法是這樣的:

App.ModalView = Ember.View.extend({ 
    classNames:   ['modal fade'], 
    attributeBindings: ['role'], 
    role:    'dialog', 

    didInsertElement: function() { 
     this._super(); 
     this.$().modal(); 
     this.$().on('hidden.bs.modal', this.close.bind(this)); 
    }, 
    close: function(event) { 
     return this.destroy(); 
    } 
}); 

而且我實例化它像這樣在隨機控制器:

var modal = controller.container.lookup('view:modal'); 
modal.reopen({ 
    controller:  this, 
    targetObject: this, 
    templateName: 'mymodal' 
}); 

return modal.appendTo('body'); 

我的模板看起來是這樣的:

<div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button> 
     <h4 class="modal-title">My Modal Title</h4> 
     </div> 
     <div class="modal-body"> 
     <div class="row"> 
      <div class="col-md-12"> 
       My modal content 
      </div> 
     </div> 
     </div> 
     <div class="modal-footer"> 
     <button type="button" data-dismiss="modal" class="btn default">Close</button> 
     <button type="button" class="btn green" {{ action "myaction"}}>My Button with an action</button> 
     </div> 
    </div> 
</div> 

如果我嘗試顯示一些控制器屬性,它的工作原理。但是當我點擊與「myaction」動作的按鈕時,沒有任何事情發生。也許我對在我的應用中處理模態的方式完全錯了(我在Ember的世界裏很新)。 我使用燼(1.1.1)的最後一個版本,並引導3.

感謝,

時Vinc

+0

我在您的視圖中看不到myaction,另外您在哪裏找到了創建類似視圖的信息? – Kingpin2k

+0

我沒有myaction處理程序,但我應該得到的消息表明沒有處理「myaction」動作:)我們必須創建像這樣的視圖,否則我們會得到一個不推薦的錯誤(如果您想要,我可以找到您的鏈接) – Vinc

回答

0

這樣

var modal = controller.container.lookup('view:modal');

見Wycats評論here你不應該訪問視圖。

另外,This answer可以幫助你在實例化模態

+0

什麼是正確的方法?我應該instanciate與App.ModalView.create()?如果我使用create(),我會得到以下錯誤:DEPRECATION:不再支持使用defaultContainer。 [defaultContainer#lookup]請參閱:http://git.io/EKPpnA – Vinc

+0

您不需要創建,附加或移除視圖。 讓框架處理這個問題。 您可以使用'render'方法來處理所有這些。 – Hyder

+0

我嘗試了你在要點中提出的解決方案。使用「渲染」方法將具有事件的模式開放處理到應用程序路徑中。但最後,我有很多限制:無法訪問我的視圖對象。不能在這個視圖上觸發事件,不能簡單地配置我的視圖,必須由我自己處理引導動畫的東西等...使用「ModalManager」,它更容易管理我的模態:打開/關閉,等等... – Vinc

2

我想通了。事實上,我的應用程序正在運行到一個特定的dom元素(#app)。當我將視圖添加到身體時,我的modale被添加到「我的應用程序外部」!所以,事件冒泡鏈被打破了。我將它添加到我的應用程序根元素中,而不是將我的視圖添加到正文中,現在一切都按預期工作!