@alptugdが私に正しい方向を向けるようにしてくれてありがとう。ここでは、私がやったことですけれども下記を参照してください、私はそれを洗練いくつかの助けが必要:
私は2つのドロップダウン、状態用とのための1つを置く(ドロップダウンが存在する場所)私のコンポーネントでember-power-select
インストール郡(その会社はここで私のモデルであることに注意):
{{#power-select
selected=company.state
options=states
onchange=(action "chooseState")
as |name|
}}
{{name}}
{{/power-select}}
{{#power-select
selected=company.county
options=counties
onchange=(action "chooseCounty")
as |name|
}}
{{name.countyName}}
{{/power-select}}
ザ・コンポーネントのJSファイルに:
import Ember from 'ember';
import config from '../../config/environment';
export default Ember.Component.extend({
company: null,
router: Ember.inject.service('-routing'),
ajax: Ember.inject.service(),
counties: [],
states: ['AK', 'AL', 'AR', 'AZ', 'CA', 'CO', 'CT', 'DC', 'DE', 'FL', 'GA', 'HI', 'IA', 'ID', 'IL', 'IN', 'KS', 'KY', 'LA', 'MA', 'MD', 'ME', 'MI', 'MN', 'MO', 'MS', 'MT', 'NC', 'ND', 'NE', 'NH', 'NJ', 'NM', 'NV', 'NY', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VA', 'VT', 'WA', 'WI', 'WV', 'WY'],
actions: {
// For dropdown handling
chooseState(state) {
this.set('company.state', state);
//Ember.set(this, "counties", this.get('ajax').request(config.host + '/api/counties/' + state).then((json) => json.items));
this.set('counties', this.get('ajax').request(config.host + '/api/counties/' + state).then((json) => json));
},
chooseCounty(county) {
this.set('company.county', county.countyName);
}
});
は今、私はヘクタール何について少し説明しましょうppening。
アクションが呼び出され(onchange=(action "chooseState")
)、モデルのcompany.state値が設定され、Ajaxを使用してその状態の郡が取得され、その結果がコンポーネントのcounties変数に割り当てられます。郡がドロップダウンすると、このcounties変数( 'options = counties')から値が取得され、自動的に新しい値がレンダリングされます。
私の場合、APIはオブジェクトの配列を返すようになっています。これは、ドロップダウンに表示する値を指定する必要があることを意味し、私はこの行のテンプレートでそれを行います:{{name.countyName}}
文字列のリストを取得している場合は、単に{{name}}
とすることができます。私はモデルに適切な値を返す必要があります。私はchooseCounty
アクションでそれを行います。
これは私が他の人が私がダイヤルイン役立つことを願って二つの問題で、動作します。
まず、あなたは郡を選択するいくつかの理由で、ドロップダウンは空白のままです。アクションが呼び出され、モデルが更新され、レコードを保存すると、データベースはすべて正常です。
第2に、最初に郡のドロップダウンをどこに配置するのかわかりません。モデルがロードされた後でこれを行う必要がありますので、私たちはどの状態にあるのかを知ります。
それです!私はcountyNamesプロパティの構文を微調整し(それを反映するためにあなたの投稿を編集しました)、それは動作します! –