2013-10-28 107 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