2017-12-28 6 views
1

私は、入力フィールドとそれに関連するボタンを持つフォームを持っており、ユーザーが入力フィールドに入力した値を持つような機能を持っています。 hbsテンプレートから何らかの形で渡すべきか、関数内のDOMから取得するだけですか?Ember hbsテンプレートは、入力フィールドから関数にパラメータを渡す必要がありますか?

このような画像がありますか?

{{ action myFunction $("#myInputId").val() }} 

答えて

1

概念的には、あなたは正しい軌道に乗っています。その後、および -

この場合

...ここにルート(アプリケーションのルート)

import Ember from 'ember'; 

export default Ember.Route.extend({ 

    alertInput: function(inputValue) { 
    alert(inputValue); 
    }, 

    actions: { 
    doSomething(userInput) { // (this is already a function) 
    // alert(userInput); // or... use a regular function in the action 
     this.get('alertInput')(userInput); 
    }, 
    }, 

}); 

、ここでは、テンプレート(アプリケーション・テンプレート)

{{input value=userInputProperty}} 

<button {{action 'doSomething' userInputProperty}}>doSomething</button> 

です。このアクションは、関数名をとり関数に渡すパラメータとしての値。

何をしようとしているかによっていくつかの方法があります。

https://ember-twiddle.com/3080649ecf98cddef6d3d64b186ba741?openFiles=templates.application.hbs%2C (回転因子のための良い時間)

2

下図のようにはい、あなたがactionvalueプロパティによってこれを行うことができます。ここでは

<input oninput={{action "myaction" value="target.value"}}/> 

はあなたのためember-twiddleです。

+0

しかし、私は別の入力フィールドから値を送信する別のボタンをしたいです。この場合、target.valueは同じ入力に適用されると思いますか? (申し訳ありませんが質問はあいまいでした) –

1

入力ボックスの値をコントローラプロパティにバインドできます。このプロパティを使用して、ボタンアクションで入力ボックスの値を派生させることができます。

ここにはember-twiddleがあります。

注:EmberコントローラはSINGLETONSです。

0

値を直接渡すことはできませんが、値をプロパティにバインドすることはできます。 入力をコンポーネントにラップし、入力値をコンポーネントプロパティにバインドすることをお勧めします。 この値をアクションパラメータとして渡すことも、コンポーネントのアクションハンドラで直接アクセスすることもできます。 このソリューションは、シングルトンコントローラを回避し、コンポーネントが再利用される可能性があります。

https://guides.emberjs.com/v2.18.0/templates/actionsおよびhttps://guides.emberjs.com/v2.18.0/templates/input-helpersも参照してください。

関連する問題