2
考慮其使用Semantic UI以下灰燼成分:組件如何從父組件同步獲取值?
import Ember from 'ember';
export default Ember.Component.extend({
classNames: ['ui', 'mini', 'modal'],
didInsertElement() {
this.$().modal({
onApprove:() => {
let promise = // obtain promise from parent... somehow
promise.then(() => {
this.$().modal('hide');
});
return false;
}
});
}
});
模態對話框只要元件是可訪問的初始化。 onApprove
選項指定當用戶在對話框中單擊「確定」時要調用的回調。該組件的父級提供了一個Ember.RSVP.Promise
,解決時關閉該對話框。
這裏就是問題—我該如何獲得父母的承諾?我考慮了以下可能性:
母公司可以提供一個動作被調用:
{{modal-dialog action='getPromise'}}
然而,行動不能返回值,因此雖然該部件可調用的動作,它不能使用它獲得承諾。
母公司可以提供承諾的綁定屬性:
{{modal-dialog promise=promise}}
這種方法的問題是
didInsertElement()
無法獲得承諾本身,因爲組件必須等待promise
屬性變異。
有沒有辦法讓組件以同步的方式向父組索要值?
你是什麼意思「獲得來自母公司的承諾」是什麼意思? –
@ Roamer-1888父母創建承諾,以響應模型的OK按鈕被單擊,然後組件需要訪問承諾以便在承諾解決時自動關閉。 –