安阳命令使用*val向回调函数输入值。如果我想输入多个项目,该怎么办?
例如,我想根据用户输入更新一个表单。所以我可以输入一个命令,比如
set Name *val
then val将包含Name值,然后我可以将该值分配给该字段。但是,如果我的表单有很多字段,为所有字段编写这样的命令可能会很繁琐。我可以用
set *FieldName *FieldVal
此命令将返回两个参数,而不是FieldName和FieldVal。如果FieldName是页面上可用字段的有效名称,那么我可以使用FieldVal更新该值,或者忽略该命令。
实现此目的的一种方法当然是解析val,首先从 命令中获取FieldName和FieldVal。set *val
但我不认为它总能产生干净的解决方案。
有没有建议的方法来实现这个?
您要查找的不是"splat"操作符(*
),而是"named-variable"操作符(:
)。
你的命令看起来像
var commands = {
'set :FormId with :Value':setForms,
}
annyang.addCommands(commands);
function setForm(formId, value){
if(isValidForm(formId)){
forms[formId].value = value;
}
}
现在输入"Set foo with bar"将会把form ["foo"]的值设置为"bar"