1

我正在创建一个输入指令,当用户输入除数字以外的任何内容时,我希望该框变为红色。我能够通过以下方式解决这个问题

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


但是当我把它放在一个指令中时,它总是返回 false,即使我输入了一个数字。这是重现问题的 Plunker。我有一个编译链接,因为它需要用新的 DOM 替换当前的 DOM。在这里使用编译而不是链接是正确的方法吗?还有为什么指令总是返回假?谢谢

4

1 回答 1

3

JavaScript 中的\字符是转义字符。它适用于您的 HTML,因为\它不用于转义 HTML 中的任何内容。您需要\\在指令中使用。您可能已经知道这一点,但没有意识到这是您的问题。:)

ngTransclude如果您的模板不打算使用该指令,也无需 $compile 您的模板或使用 transclude 选项。您的指令可以固定和简化为:

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 回答