私は以下のようにスプライトに含まれるSVGアイコンを使用しています。角度指定としての動的<svg-icon>
<div class="py-3">
<svg-icon><src href="sprite.svg#si-glyph-bullet-checked-list"/></svg-icon>
<span>Tasks</span>
</div>
そして、それは私が角度指令にそれを書き換える際に正常に動作し、まだ:
app.directive('ngxTileIcon', function() {
return function (scope, element, attrs) {
var tileIcon = attrs['ngxTileIcon'];
var tileCaption = element.text();
element.text('');
element.addClass('py-3');
element.append(
$('<svg-icon/>').append(
$('<src/>').attr('href', 'sprite.svg#si-glyph-' + tileIcon)
),
$('<span/>').text(tileCaption)
);
};
});
そして、それを使用します。
<div ngx-tile-icon="bullet-checked-list">Tasks</div>
基本的に、私は同じマークアップが、Googleを取得していますChromeは、SVG要素がDOMに追加されたことを表示しません。非角度アプローチを使用する場合、それは行います。最後に、Angularディレクティブを使用する場合、アイコンは表示されません。
を解決した私はアプローチを変えた - 代わりに、要素にマークアップを追加するので、私は直接html()
でその内容を置き換えています。今は期待どおりに動作します。
app.directive('ngxTileIcon', function() {
return function (scope, element, attrs) {
var tileIcon = attrs['ngxTileIcon'];
var tileCaption = element.text();
var $tempDiv = $('<div/>');
element.addClass('py-3');
$tempDiv.append(
$('<svg-icon/>').append(
$('<src/>').attr('href', 'sprite.svg#si-glyph-' + tileIcon)
),
$('<span/>').text(tileCaption)
);
element.html($tempDiv.html());
};
});
''は角ディレクティブではありません - それは角がなくても動作します。 http://glyph.smarticons.co/のアイコンとリンクされている_iconwc.js_ライブラリを使用しています。 –
私の悪い!それは実際にはWebコンポーネントのようですが、私はそれがAngularであると仮定しました。 DOMに追加する方法がWebコンポーネントの要素を引き起こさない可能性がありますが、私は確かに言えませんでした。 –
はい、WCのものがトリガーされませんでした。 'append()'の代わりに 'html()'を使用すると、そのトリックが行われました。 –