我正在努力编写自定义元素指令。该指令将其称为myElement
,根据某些参数生成多个textarea
或input
字段,并将ngModel
应用于这些字段。
我还希望能够在myElement
上指定其他属性指令,例如ngMaxlength
,这些指令会传播到动态生成的输入。
示例:
<my-element foo="bar" ng-maxlength="100" my-other-directive/>
可编译为:
<my-element foo="bar">
<input type="text" ng-model="bar[abc]" ng-maxlength="100" my-other-directive/>
<input type="text" ng-model="bar[xyz]" ng-maxlength="100" my-other-directive/>
</my-element>
我还将myElement
的优先级设置为更高的值。但是,虽然从父元素中正确删除了属性,但仍然会为my-other-directive
元素执行其他指令,如上例中的myElement
。这会导致需要ngModel
的指令抛出异常。我该怎么做才能防止这种情况?
编辑我使用角度1.2.20
编辑2 我的指令如下所示:
restrict: 'E',
compile: function (element, attrs) {
var inputElements, attrsToRemove = [];
inputElements = ... // Create inputs based on attrs ...
angular.forEach(attrs.$attr, function (originalName, normalizedName) {
inputElements.attr(originalName, attrs[normalizedName]);
attrsToRemove.push(originalName);
}
});
angular.forEach(attrsToRemove, function (name) {
element.removeAttr(name);
});
}
答案 0 :(得分:0)
优先权适用于同一元素angularjstutorial.appspot.com/learn/directive#priority
终端停止编译,angularjstutorial.appspot.com/learn/directive#terminal
的低级指令建议使用require(^)和控制器angularjstutorial.appspot.com/learn/directive.html#/_tblcontents_23
另请参阅angularjstutorial.appspot.com/learn/directive#/sync-existing(范围{&#39; =&#39;}) 和angularjstutorial.appspot.com/learn/directive#sync-attribute(范围{&#39; @&#39;}