1

入力ディレクティブを作成しています。ユーザーが数字以外を入力すると、ボックスが赤くなります。次の方法でこれを解決できました

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


しかし、それをディレクティブに入れると、数値を入力しても常に false が返されます。これが問題を再現するためのプランカーです。現在のDOMを新しいDOMに置き換える必要があるため、これはリンクよりもコンパイルしています。リンクではなくここでコンパイルを使用するのは正しいアプローチですか? また、ディレクティブが常に false を返すのはなぜですか? ありがとう

4

1 に答える 1

3

JavaScriptの\文字はエスケープ文字です。\HTMLでは何もエスケープするために使用されないため、HTML で機能します。\\ディレクティブで使用する必要があります。あなたはおそらくこれをすでに知っていますが、それがあなたの問題であることを認識していませんでした. :)

テンプレートがディレクティブを使用しない場合は、テンプレートを $compile したり、transclude オプションを使用したりする必要もありませんngTransclude。ディレクティブは次のように修正および簡略化できます。

app.directive("numberInput", function(){
    return {
        restrict: 'E',
        scope: {
            fooBar: "=ngModel"
        },
        require: "ngModel",
        template: "<input type='text' ng-model='fooBar' ng-pattern='/^\\d*$/'>"
    }
});
于 2013-05-07T05:34:23.747 に答える