2016-03-29 9 views
0

Ich versuche, mehr als ein Argument in einer Glut Aktion zu übergeben. Das Problem ist, dass eines der Argumente value = 'target.value' ist und anscheinend Ember keine zweite hinzufügen möchte.ember 2 Parameter in einer Aktion eines Auswahlmenüs

Wie kann ich diese beiden Parameter übergeben? value = 'target.value' funktioniert, wenn ich nur ein Argument brauche.

Ich habe versucht, es auf diese Weise zu schreiben, aber die Kategorie ist nicht definiert.

{{#each selectorsData as |selectorItem|}} 
<select onchange={{ action selectorItem.action value='target.value' category='selectorItem.name' }}> 

Ich habe diese Art und Weise auch versucht, aber Ember gibt mir einen Fehler

{{#each selectorsData as |selectorItem|}} 
    <select onchange={{ action selectorItem.action value='target.value' selectorItem.name }}> 

Error: Parse error on line 4: 
....value' selectorItem.name }}> 

Antwort

2

zu Um dies zu erreichen, müssen Sie Closure-Aktionen ausführen. Reference to Invoking Action

-Controller

export default Ember.Controller.extend({ 
    appName: 'Ember Twiddle', 
    selectorsData: [ 
    { name: 'mike', value: '1', action: 'alert', options: ["1", "2"] }, 
    { name: 'steve', value: '2', action: 'alert', options: ["1", "2"] } 
    ], 

    actions: { 
    alert(value, name, target) { 
     alert("Hello: " + value + " - " + name + "-" + target); 
    } 
    } 

}); 

Vorlage

<h1>Welcome to {{appName}}</h1> 
<br> 
<br> 
{{outlet}} 
<br> 
<br> 
{{#each selectorsData as |selectorItem|}} 
    <label>{{selectorItem.name}}</label> 
    <select onchange={{action (action selectorItem.action selectorItem.value selectorItem.name) value="target.value"}}> 
     {{#each selectorItem.options as |option|}} 
     <option value={{option}}>{{option}}</option 
     {{/each}} 
    </select> 
    <br> 
{{/each}} 

Twiddle

+0

Es spielt keine arbeite nicht mit value = 'target.value' .. – Wesley

+0

nein, value = 'target.value' gibt die selec zurück in dem Selektor als Argument – Wesley

+0

ah ja ich sehe was du jetzt meinst –

0

so etwas wie dieses Versuchen:

<select onchange={{action selectorItem.action target.value selectorItem.name}}> 

.... 

yourAction: function(targetValue, selectorItemName) {..} 

Hier ist ein Beispiel: http://jsfiddle.net/nvfm3yz1/

+0

Pat, vielen Dank für Ihre Antwort, aber es funktioniert immer noch nicht, Ihre Lösung gibt undefined für 'Wert' – Wesley

Verwandte Themen