无法更改angularjs中模板中属性的值

时间:2014-11-04 04:55:51

标签: angularjs angularjs-directive

我有一个非常特殊的情况。我的演示指令

.directive('sampleanchortag',function(){
    return{
        restrict:'EA',
        //replace:true,//
        template:'<a href="https://www.google.com">Click Here</a>',
        link:function(scope, elem, attrs){
            elem.attr('href','https://www.gmail.com'); //works when set replace=true
        }
    };
});

默认情况下,我将href的值设置为模板中的 url 。在链接功能中我将href的值更改为其他网址。 但是,如果不设置 repalce = true ,我将无法执行此操作。设置替换= true 后,我可以使用elem.attr(&#39; href&#39;,mynewurl)轻松更改模板&#39; s href 的值。< / p>

replace = true 在最新版本的角度中按此折旧 AngularJs documentation

请让我知道我失踪的地方。

1 个答案:

答案 0 :(得分:0)

如果您使用代码更改attr(不替换):

elem.attr('href','https://www.gmail.com'); //elem is sampleanchortag not anchor element

然后您的html结构将变为:

<sampleanchortag href="https://www.gmail.com">
    <a href="https://www.google.com"></a>
</sampleanchortag>

如果您不想替换指令元素,则需要将代码更改为:

elem.find("a").attr('href', 'https://www.gmail.com');    

Here is JSFIDDLE.

顺便说一句,我认为gmail的地址是mail.google.com:)