我是棱角分明的新人。我想写一个指令,它具有我在html中使用时添加到它的所有属性。例如:
这是我的指示
'use strict';
app.directive('province', function($compile) {
return {
restrict: 'E',
link: function (scope, element, attrs, controller) {
var markup = "<select></select>";
var elem = angular.element(element);
elem.replaceWith($compile(markup)(scope));
}
};
})
HTML:
<province class="form-control" data-target"elemntId"></province>
我希望我的<select>
包含我在html中添加到指令的类和其他属性。
我想要的输出:<select class="form-control" data-target="elementId"></select>
我使用了angular.element(element).attr(attr);
,但它没有用;
提前感谢任何帮助。
修改
我希望将链接函数的attrs中存在的所有属性添加到markup
。
答案 0 :(得分:8)
我将遍历指令的attr数组并将其应用于您的模板:
app.directive('province', function($compile) {
return {
restrict: 'E',
replace:true,
template: "<select></select>",
link: function (scope, element, attrs) {
var attr;
for (attr in attrs.$attr) {
if(attrs.hasOwnProperty(attr)){
element.attr(attr, attrs[attr]);
}
}
}
};
})
指令标签:
<province foo="bar" foo1="bar1"></province>
编译成:
<select foo="bar" foo1="bar1"></select>
答案 1 :(得分:5)
根据您的需要,您无需自行编译。您可以使用模板替换。
app.directive('province', function() {
return {
restrict: 'E',
template: '<select></select>',
replace: true,
link: function (scope, element, attrs) {
}
};
});
答案 2 :(得分:1)