如何在指令中覆盖图像源

时间:2014-02-17 12:18:09

标签: angularjs

我想在指令中覆盖图像src。我尝试了以下,但都没有效果。

app.directive('imgTransform', function () {
    return {
        retrict: 'A',
        link: function (scope, elem, attrs) {
            elem.attr('ng-src', 'foo');
            attrs.ngSrc = 'foo';
            elem.attr('src', 'foo');
            attrs.src = 'foo';

        }
    };
});

链接功能是否在DOM绑定发生之前执行?

我还尝试创建隔离范围并绑定到ngSrc属性:

    scope: {
        src: '@ngSrc'  
    },

然后在链接功能中设置scope.ngSrc。这也不起作用。

我错过了什么吗?

http://jsfiddle.net/benfosterdev/y7JE9/

1 个答案:

答案 0 :(得分:1)

您需要在进入链接功能之前对其进行修改。

我建议在控制器函数中,而不是深入挖掘$ compiler。

    restrict: "A",
    controller: function ($scope, $element, $attrs) {
        $attrs.$set('ngSrc', 'someOtherValue');
    },
    link: function (scope, el, attrs) {...}

这是一个小提琴:http://jsfiddle.net/y7JE9/5/

另外,在链接函数中查找插值时使用$ observe。祝你好运:)