我正在创建一个输入指令,当用户输入除数字以外的任何内容时,我希望该框变为红色。我能够通过以下方式解决这个问题
<input ng-model='numberNoDir' type='text' ng-pattern='/^\d*$/'>
但是当我把它放在一个指令中时,它总是返回 false,即使我输入了一个数字。这是重现问题的 Plunker。我有一个编译链接,因为它需要用新的 DOM 替换当前的 DOM。在这里使用编译而不是链接是正确的方法吗?还有为什么指令总是返回假?谢谢
我正在创建一个输入指令,当用户输入除数字以外的任何内容时,我希望该框变为红色。我能够通过以下方式解决这个问题
<input ng-model='numberNoDir' type='text' ng-pattern='/^\d*$/'>
但是当我把它放在一个指令中时,它总是返回 false,即使我输入了一个数字。这是重现问题的 Plunker。我有一个编译链接,因为它需要用新的 DOM 替换当前的 DOM。在这里使用编译而不是链接是正确的方法吗?还有为什么指令总是返回假?谢谢
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*$/'>"
}
});