1

Annyang 命令使用 *val 将值输入到回调函数。如果我想输入多个项目,我应该怎么做?

例如,我想根据用户输入更新表单。所以我可以有一个命令

set Name *val

然后 val 将包含我可以分配给该字段的 Name 值。但是,如果我的表单有很多字段,为所有字段编写这样的命令可能会很乏味。相反,我可以

set *FieldName *FieldVal

此命令将返回两个参数,而不是 FieldName 和 FieldVal。如果 FieldName 是页面上可用字段的有效名称,那么我可以使用 FieldVal 更新该值,或者忽略该命令。

实现这一点的一种方法是,当然解析 val 以首先获取 FieldName ,然后从类似的命令中获取 FieldVal

set *val

但我不认为它总是会产生干净的解决方案。

有没有建议的方法来实现这一点?

4

1 回答 1

2

您正在寻找的不是“splat”运算符 ( *),而是“命名变量”运算符 ( :)。

您的命令将如下所示

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”会将表单[“foo”]的值设置为“bar”。

于 2015-09-08T05:11:01.890 回答