knockout.js自定义绑定名称中是否允许使用数字?

时间:2013-10-28 13:58:26

标签: netbeans knockout.js netbeans-7.4

我有一个应用程序,其自定义绑定声明为

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检查员是否过于热情?

1 个答案:

答案 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;