2013-10-28 124 views
1

我有一个自定义的应用程序绑定声明如下knockout.js自定义绑定名称中允许有数字吗?

ko.bindingHandlers.slideContent2 = { 
    init: ..., 
    update: ... 
} 

,我使用我的HTML与(其中包括)

<div data-bind="slideContent2: true"></div> 

它的工作原理,并产生没有错误。今天我发现Netbeans 7.4中的新knockout.js语法检查器认为<div data-bind="slideContent2: true">有错误。它反对数字2。如果我删除它,它认为名称没问题。环顾网络示例,我没有找到一个用于自定义绑定名称的数字示例。

自定义绑定名称中的数字是否合法? Netbeans检查器是否过于繁琐?

+1

数字是合法的在JavaScript属性名称那么也结合处理程序名称。只有Netbeans检查器过于简单。 – nemesv

回答

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; 
+0

非常感谢您确认我的怀疑。我提交了一个错误报告:https://netbeans.org/bugzilla/show_bug.cgi?id = 237736 – emrys57