私はドラッグアンドドロップインターフェイスを作るためのアイデアを出しています。私は、グリッド上の位置にドラッグできる複数のコンポーネントを持っています。私は、ユーザーが異なるアレンジを選択できるようにするボタンを持っています。コンポーネントが聴いているコントローライベントを作成する
コンポーネントの位置を設定する関数が必要です(左と上で非常に簡単です)。コンポーネントが挿入されているときと別の配置が選択されているときにこの関数を呼び出せるようにしたい。
私がしたいことは、ルートのコントローラにイベントを作成することです。私はその後、各コンポーネントがイベントを聞いて、必要に応じて反応できるようにしたいと考えています。私はこの仕事をするのに十分理解していないのではないかと思います。私はAPIとここにいくつかの質問(1、2)を読んだことがありますが、運はありません。
は、ここでのルートのコントローラーは...私が持っているもの
です:
import Ember from 'ember';
export default Ember.Controller.extend(Ember.Evented, {
actions: {
callPosition: function(){
this.trigger('position');
console.log('Trigger set...');
},
})
とコンポーネント:
import Ember from 'ember';
export default Ember.Component.extend(Ember.Evented, {
didInsertElement : function(){
this.get('controller').on('position', this, this.position);
},
position: function(){
console.log('event heard by the component');
},
私は理解していないいくつかのこと:
- Ember.Evented mixin correcを追加しましたか?だって?
- この例のように、リスナーをdidInsetElementイベントに追加しました。これは、コンポーネントがその生涯を通してイベントをリッスンする正しい方法ですか?
- イベントの対象は何ですか?それを設定したコントローラーを「取得」するだけで、それは長い間聞くことができますか?
あなたのアドバイスは、この出芽アマチュアに大きな助けとなります!
あなたはこのブログを読んでいますか?https://emberway.io/ember-js-and-html5-drag-and-drop-fa5dfe478a9a#.tgfpo6kxu?ここにある行動の基本的なDnD ... –
ええ、ありがとう、それは私の出発点でした。いい説明。 – rjoxford