我有一个表单,其中包含在提交时定义的操作。 我想有两个按钮提交带有参数的表单。 这是一个例子:
<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验证等)
中装备这是可能的,还是我错过了一些大事?
谢谢!
答案 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布尔属性来区分,
应用程序控制器,
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>