Annyang命令使用* val为回调函数输入值。如果我想输入多个项目,我该怎么办?
例如,我想根据用户输入更新表单。所以我可以有一个像
这样的命令connections = {
'1': {
'iphone': ws_connection1,
'pc': ws_connection2
},
'2': {
'ipad': ws_connection3
}
}
然后val将包含我可以分配给该字段的Name值。但是如果我的表单有很多字段为所有字段编写这样的命令可能会很乏味。相反,我可以
set Name *val
此命令将返回两个参数,而不是FieldName和FieldVal。如果FieldName是页面上可用字段的有效名称,那么我可以使用FieldVal更新该值,或忽略该命令。
实现这一目标的一种方法是,首先解析val以首先从像
这样的命令获取FieldName然后使用FieldValset *FieldName *FieldVal
但我认为它不会总能带来干净的解决方案。
是否有建议的方法来实现这一目标?
答案 0 :(得分:2)
您正在寻找的不是" splat"运算符(*
)但是"命名变量" operator(:
)。
您的命令将如下所示
var commands = {
'set :FormId with :Value':setForms,
}
annyang.addCommands(commands);
function setForm(formId, value){
if(isValidForm(formId)){
forms[formId].value = value;
}
}
现在说"用条形图设置foo"将表单[" foo"]的值设置为" bar"。