我试图避免一些重复的HTML,但是很难让我的指令完全工作。在我的代码的简化版本中,我们的想法是展开如下内容:
<mydir ng-model="x"></mydir>这样的事情:
<div ng-class="{'has-error': myform.myfield.$invalid}">
<input name="myfield" ng-model="x" ng-pattern="/^\d+$/">
</div>然而,ng类被完全忽略了。吴-模型和ng-模式似乎运作良好。我的指令:
.directive('mydir', function ($compile) {
return {
restrict: 'E',
priority: 100,
compile: function (element, attrs) {
var node = '<div ng-class=' +
'"{\'has-error\': myform.myfield2.$invalid}">' +
'<input name="myfield2" ng-model="' + attrs['ngModel'] +
'" ng-pattern="/^\\d+$/"></div>';
var e = angular.element(node);
$compile(e.contents());
element.replaceWith(e);
}
};
}在运行代码中,您可以看到第一个输入字段是如何用"ab“这样的无效条目正确地变成红色的,但是第二个输入没有。
发布于 2014-03-25 04:08:01
更改指令的内部HTML,而不是完全替换它。
compile: function (element, attrs) {
var node = '<div ng-class=' +
'"{\'has-error\': myform.myfield2.$invalid}">' +
'<input name="myfield2" ng-model="' + attrs['ngModel'] +
'" ng-pattern="/^\\d+$/"></div>';
element.html(node);
}小提琴:http://jsfiddle.net/5eLxw/
https://stackoverflow.com/questions/22624849
复制相似问题