我有一个应用程序,其自定义绑定声明为
ko.bindingHandlers.slideContent2 = {
init: ...,
update: ...
}
我在我的html中使用它(包括其他内容)
<div data-bind="slideContent2: true"></div>
它可以工作并且不会产生任何错误。今天我发现Netbeans 7.4中新的knockout.js语法检查器认为<div data-bind="slideContent2: true">
出错了。它反对数字2
。如果我删除它,它认为名称没问题。查看Web示例,我没有找到自定义绑定名称中使用的数字示例。
自定义绑定名称中的数字是否合法? Netbeans检查员是否过于热情?
答案 0 :(得分:1)
从Knockout的角度来看,每个有效的JavaScript标识符名称都是有效的自定义绑定处理程序名称。
因此,您可以在自定义绑定处理程序中使用数字。有关完整标识符名称参考,您可以查看:Valid identifier names
但是从Netbeans语法检查器的角度来看,自定义绑定名称中只允许使用字母。
如需参考,请查看KODataBindLexer的来源(我已添加了一些评论)
case IN_KEY:
if (!Character.isLetter(c)) { // the character 2 is not a letter
if (c == ':') {
state = State.AFTER_KEY;
input.backup(1); //backup the colon
return tokenFactory.createToken(KODataBindTokenId.KEY);
} else if (Character.isWhitespace(c)) {
state = State.WS_AFTER_KEY;
input.backup(1); //backup the ws
return tokenFactory.createToken(KODataBindTokenId.KEY);
} else { // 2 is not a the colon and not a whitespace so it returns Error:
state = State.INIT;
return tokenFactory.createToken(KODataBindTokenId.ERROR);
}
}
//stay in IN_KEY
break;