您應該可以使用類似下面的服務和組件來實現您想要的功能。
看一看在twiddle對於如何工作完全是一個演示,和下面的代碼爲快速參考
你的路徑模板可以是這個樣子。
// templates/hasmodal.hbs
{{#bs-modal}}
Modal Content
{{/bs-modal}}
您的路線掛鉤,與服務注入
// routes/hasmodal.js
export default Ember.Route.extend({
modalNavigation: Ember.inject.service(),
activate(){
console.log('openingModal')
this.get('modalNavigation').openModal()
},
deactivate(){
console.log('closingModal')
this.get('modalNavigation').openModal()
},
actions: {
onClose(){
console.log('we want to close route')
}
}
})
您的BS-模式或相關組件
//components/bs-modal.js
export default Ember.Component.extend({
modalNavigation: Ember.inject.service(),
isOpen: Ember.computed.alias('modalNavigation.modalOpen'),
classNameBindings: ['isOpen:modalDialog:notOpen'],
actions: {
close(){
this.get('modalNavigation').closeModal()
}
}
})
在BS模式的組件模板
// templates/components/bs-modal
<div>
{{yield}}
</div>
<button class='close' {{action 'close'}}>Close Me</button>
你莫代爾服務來管理狀態
// services/modal-navigation.js
export default Ember.Service.extend({
modalOpen: false,
openModal(){
this.set('modalOpen',true)
},
closeModal(){
this.set('modalOpen',false)
}
})
UPDATE:
更新twiddle
它基本上巢包含要保留的狀態和顯示模式背後的路線下方的模式途徑。
// router.js [truncated]
Router.map(function() {
this.route('module1',function(){
this.route('query',function(){
this.route('add')
this.route('update', { path: '/update/:item_id' })
this.route('delete', { path: '/delete/:item_id' })
})
})
// templates/modules1/query.hbs
Queried List {{link-to 'add item' 'module1.query.add'}}<br/>
<ul>
{{#each model as |item|}}
<li>
{{item.id}}-{{item.title}}
{{link-to 'u' 'module1.query.update' item}}
{{link-to 'd' 'module1.query.delete' item}}
</li>
{{/each}}
</ul>
{{outlet}}
// templates/module1/query/add.hbs
{{#modal-component isOpen=true onClose=(action "routeClosed")}}
<div>
Title:{{input value=model.title}}
</div>
<button {{action 'save'}}>Save</button>
{{/modal-component}}
在所有其他子部件遵循相同的模式包裝原理
@ykaragol嗨,你還需要在這裏,我可以幫些什麼呢? – TameBadger
@TameBadger我已經更新了這個問題。 – ykaragol
嗯有趣,我只是想分開你想要更多一點。分類時是否想要同時打開兩條路線?在這種情況下,module1.query目前是路由,並且您想要在模塊中打開module.add?我想我有一個解決方案,如果是這樣的話.. – TameBadger