如何在Ember中为提交操作添加参数?

时间:2017-01-31 14:35:34

标签: javascript ember.js

我有一个表单,其中包含在提交时定义的操作。 我想有两个按钮提交带有参数的表单。 这是一个例子:

<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 个答案:

答案 0 :(得分:2)

您可以将参数必需值或属性传递给动作助手,如下所示

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

你可以从doStuff函数中获取它,

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

编辑:

选项1)我们可以像<form onsubmit={{action "doStuff"}}>那样,在doStuff内你会得到event个对象作为第一个参数,但是我们再次无法区分调用哪个按钮。所以解决方案就像使用块帮助器一次包含一个。

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>