2013-05-07 17 views
0

我正在創建一個輸入指令,當用戶輸入除數字以外的任何內容時,我希望該框變爲紅色。我能夠通過以下
爲什麼ng-pattern在指令內一直返回false?

<input ng-model='numberNoDir' type='text' ng-pattern='/^\d*$/'> 


解決這個,但是當我把它放在一個指令,那麼它總是返回false,即使我輸入一個數字。 Here is the Plunker of to reproduce the problem。我有這個編譯比鏈接,因爲它需要用新的DOM替換當前的DOM。在這裏使用編譯而不是鏈接是否正確?還有爲什麼指令總是返回false? 謝謝

回答

2

\ JavaScript中的字符是轉義字符。它在你的HTML中工作,因爲\不用於在HTML中轉義任何東西。你需要在你的指令中使用\\。你可能已經知道這一點,但沒有意識到這是你的問題。 :)

如果您的模板不打算使用ngTransclude指令,也不需要$編譯模板或使用transclude選項。你的指示可以被固定和簡化爲:

app.directive("numberInput", function(){ 
    return { 
     restrict: 'E', 
     scope: { 
      fooBar: "=ngModel" 
     }, 
     require: "ngModel", 
     template: "<input type='text' ng-model='fooBar' ng-pattern='/^\\d*$/'>" 
    } 
}); 
+0

哇完全忘了\\,我一直在想我在編譯器或鏈接中弄亂了一些東西。謝謝一噸 – Nair 2013-05-07 05:41:02