【问题标题】:Changing attribute binding to third party directive in angularjs在angularjs中将属性绑定更改为第三方指令
【发布时间】:2020-03-17 14:46:55
【问题描述】:

我正在尝试更改传入第三方指令md-icon 的属性。 我尝试通过委托,但值没有改变。

到目前为止,这就是我所拥有的。

angular.module('app').decorator('mdIconDirective', function ($delegate) {
let directive = $delegate[0];
let compile = directive.compile;

directive.compile = function(el, attrs) {
    let link = compile.apply(this, arguments);

    return function(scope, el, attrs) {
        let src = `node_modules/@mdi/svg/svg/${attrs.mdSvgSrc}.svg`;
        el[0].setAttribute('mdSvgSrc', src);

        link.apply(this, arguments)
    };
};

return $delegate;
});

我想更改md-svg-src中传递的值,这样我就不用每次都写完整路径了。

【问题讨论】:

    标签: angularjs angularjs-material


    【解决方案1】:

    我想更改md-svg-src中传递的值,这样我就不用每次都写完整路径了。

    您可能不想为每个图标发出单独的 HTTP 请求,因此您可以将 SVG 图标捆绑在一起,并使用 $mdIconProvider 作为图标集预加载它们。还可以为图标集指定名称,作为单个图标的命名空间,因此您可以像 "social:cake" 一样引用它们。

    app.config(function($mdIconProvider) {
        $mdIconProvider
          .iconSet('social', 'img/icons/sets/social-icons.svg', 24)
          .defaultIconSet('node_modules/@mdi/svg/svg/core-icons.svg', 24);
    });
    

    此技术可用于避免每次都使用完整路径。

    <md-icon md-svg-icon="social:android" aria-label="android "></md-icon>
    

    有关详细信息,请参阅

    【讨论】:

    • 感谢您的回复,但我真的需要知道如何在将属性绑定发送到第 3 方指令之前对其进行操作。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 2016-01-07
    • 2013-05-14
    • 2012-12-22
    相关资源
    最近更新 更多