如何替换已包含值的Angular属性?例如:
angular.module('app', [])
.directive('edit', function(){
return {
template: '<a ng-href="{{data}}">Link Text</a>',
replace: true,
link: function(scope, elm, attr){
scope.data = 'http://www.example.com';
}
};
});
HTML:
<a edit ng-href="test"></a>
只需将链接网址附加到&#34; test&#34; HREF。我尝试使用
elm.attr('ng-href', '{{data}}');
和这个想法的许多变化,但它没有工作。
答案 0 :(得分:1)
您可以在指令中使用compile
函数,并在其中重新声明此属性:
.directive('edit', ['$timeout', function($timeout) {
return {
template: '<a ng-href="{{data}}">Link Text</a>',
replace: true,
restrict:'A',
compile:function(elm, attr){
return {
pre: function preLink(scope, iElement, iAttrs, controller) {
iAttrs.ngHref = "{{data}}";
},
post: function postLink(scope, iElement, iAttrs, controller) {
scope.data = 'http://www.example.com';
}
}
}
}
}])