2016-12-18 6 views
1

問題:入力フィールドコンポーネントから変更された値をアクションに転送したいが、最初の値のみを受け取る。Ember 2.11.Xアクションハンドラによる入力値とコンポーネントの取得方法

コントローラは可変幅を最初は100で保持しますが、入力フィールドで変更された値の後に更新する必要があります。この場合

 <form {{action 'resizePanel' value on="submit"}} class="form-inline waves-effect waves-light" style="width:50px"> 
       {{input-field type="text" value=width classNames="form-control" style="width:50px; color:white"}} 
     </form> 

自衛隊

+0

コンポーネント入力フィールドの実装を共有できますか?このような問題が発生した場合は、幅の値との双方向バインディングを使用していない可能性があります(これは私の意見では良いことです)。しかし、潜在的な更新について通知するためのアクションも提供する必要があります入力要素。あなたのケースを説明するひねりは、ちょうど優れているかもしれません。 – alptugd

+0

こんにちは、ありがとうございます。 https://ember-twiddle.com/50da8205ff23cba80337e3ef3cc6c3a1?openFiles=templates.application.hbs%2Ctemplates.components.input-helper.hbs –

+0

下記の私の答えをご覧ください。あなたに代わる解決策を説明するためにひねります。 – alptugd

答えて

1

あなたinput-helperコンポーネントがEmber.TextField、あなたが送信する必要はありませんを拡張する場合アクションヘルパーへの議論。

Twiddle-Link

入力helper.jsコンポーネントファイル

import Ember from 'ember'; 
export default Ember.TextField.extend({ 
}); 

application.hbs、あなたはここでアクションヘルパーから

<form {{action 'setWidth' on='submit'}}> 
{{input-helper type="text" value=width class="form-control" style="width:50px; color:black"}} 
</form> 
+0

完璧、ありがとうございます。 –

0

、私はあなただけactionヘルパーにwidthを渡すことができると思います。

<form {{action 'resizePanel' width on="submit"}} class="form-inline waves-effect waves-light" style="width:50px"> 
    {{input-field type="text" value=width classNames="form-control" style="width:50px; color:white"}} 
</form> 
+0

ちょっとクリス、私は値のような幅を使用する場合は、私は100以上の私の例では、最後の値を持っているが、私は100から200に入力値を変更しましたが、私はなぜ幅のパラメータが更新されないのかわかりません。 –

+0

ああ、私は私の答えで指摘したように質問を「幅」に更新することをお勧めします。 @alptugdも示唆しているように、 'input-field'がどのように実装されているかについてもっと詳しく知りたいと思います。 –

+0

どうぞよろしくお願いします。 https://ember-twiddle.com/50da8205ff23cba80337e3ef3cc6c3a1?openFiles=templates.application.hbs%2Ctemplates.components.input-helper.hbs –

1

を幅引数を削除することができ、あなたの提供する理由説明がありtwiddle動作しません。入力タグ付きの独自のコンポーネントを作成しました。あなたはvalueと属性のバインディングを行いました。コンポーネントのvalueフィールドをhtml input要素のvalue属性にバインドすることは何もしていません。

EmberのTextFieldコードを見てください。それはTextSupportというミックスインを使用しています。ソースコードを見ると、Ember自体がHtml DOM Eventsを処理していることがわかります。したがって、application.jsで定義されたwidthへの双方向バインディングが機能していないことは当然です。 input-helperコンポーネント内のvalueプロパティの値が、DOMイベントを処理することによってvalue html属性と同期されていないためです。つまり、value属性の変更は、コンポーネントのvalueプロパティに反映されていません。

ここでは何ができますか?

  • thisのように組み込みのinput Emberのヘルパーを使用するだけで動作します。
  • 独自のコンポーネントを使用する場合は、EmberのようなDOMイベントを処理してください。 Emberから取られたイベント処理の非常にsimplified versionでさえ、仕事をします。上記のEmberのTextSupportミックスインを使用することもできます。
+0

OPが入力要素にスタイル属性を要求しました。それがEmber inbuilt入力ヘルパーを好まない理由です。 – kumkanillam

+0

私はその部分を逃しました。指摘してくれてありがとう。それから彼はEmberのTextSupportミックスインを使うことができると思います。 – alptugd

+0

OPはそれをひっくり返して言いましたが、問題に言及していませんでした。 – kumkanillam

関連する問題