2017-01-31 1 views
1

У меня есть форма с действием, определенным на submit. Я хотел бы иметь две кнопки, которые передают форму с параметром. Вот пример:Как добавить параметр в действие отправки в Ember?

<form {{action "doStuff" on="submit"}}> 
    <input type="text"> 
    .... 
    .... 
    <button type="submit">Do Stuff</button> 
    <button type="submit">Do Stuff and Other Stuff</button> 
</form> 

doStuff(doOtherStuff=false){ 
    //do stuff 
    if(doOtherStuff){ 
     //do other stuff 
    } 
} 

Я знаю, что я могу определить два действия на кнопки, как это:

<button type="submit" {{action "doStuff" false}}>Do Stuff</button> 
<button type="submit" {{action "doStuff" true}}>Do Stuff and Other Stuff</button> 

Но я хотел бы пристало от формы представления (валидации HTML, и т.д.)

Возможно ли это, или я пропустил что-то большое?

Спасибо!

ответ

1

Вы можете передать аргумент нужное значение или свойство помощнику действий как ниже,

{{action "doStuff" true on="submit"}} 

Вы можете получить его от функций DoStuff,

doStuff(isEnabled){ 
    //do common stuff 
    if(isEnabled){ 
    //do enable stuff 
    } 
} 

EDIT:

Option1) Мы может сделать как <form onsubmit={{action "doStuff"}}> и внутри doStuff вы получите event объект в качестве первого аргумента, но опять же мы не можем различать te, которая вызывается. поэтому решение будет похоже на использование, если блок-помощник должен включать по одному.

Option2) Использование IsFirst Логическое свойство дифференцировать,

Sample twiddle продемонстрировать

контроллер приложения,

import Ember from 'ember'; 
export default Ember.Controller.extend({ 
    isFirst: false, 
    actions:{ 
    doStuff(event){ 
     console.log('isFirst',this.get('isFirst'));  
     return false; 
    }, 
    setIsFirst(val){ 
     this.set('isFirst',val); 
    } 
    } 
}); 

application.hbs

<form onsubmit={{action "doStuff"}}> 
    <button type="submit" id="test1" value="first" {{action 'setIsFirst' true preventDefault=false}}>firstbutton</button> 
    <button type="submit" id="test2" value="second" {{action 'setIsFirst' false preventDefault=false}}>second button</button> 
</form> 
+0

Вы имеете в виду помощника в тег формы? Я получаю это, но если я хочу сделать другое действие в зависимости от используемой кнопки, как это помогает? – hereismass

+0

Вы хотите одновременно отображать обе кнопки, если мы не можем использовать, если блок-хелпер отображает один за раз. – kumkanillam

+0

@hereismass Я обновил свой ответ с возможными вариантами. Я думаю, что option2 - это то, что вы ищете – kumkanillam