我正在努力編寫自定義元素指令。該指令稱爲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
的指令引發異常。我能做些什麼來防止這種情況發生?
EDIT我使用角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);
});
}
是這樣'<我的-element foo =「bar」my-child-directives =「ng-maxlength ='100'my-other-directive」/>'你有效的選擇嗎?這個想法是傳遞一個字符串與你想包含在子元素中的指令,而不是直接在父元素上定義它們。 – bmleite 2014-09-01 13:19:55
你的代碼在哪裏? – Sacho 2014-09-01 13:42:23
@bmleite你是個天才!爲什麼我沒有想到這個?奇蹟般有效。謝謝! – user2323470 2014-09-02 08:09:25