通过安阳语音识别库输入1个以上参数(*val)的最佳/建议方法是什么?



安阳命令使用*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"

最新更新