【发布时间】:2015-02-25 10:02:08
【问题描述】:
我正在尝试调整图像大小,因此我不需要大图像文件。因此,我需要更改 img 标签的 'src' 以将其重定向到调整大小服务。
我一直在尝试制定一个指令,指定我想要使用的大小并 $observe ngSrc。
.directive('resizeTo', function ( imageResizeFactory ) {
return {
restrict: 'A',
link: function (scope, el, attrs) {
var sizes = attrs.resizeTo.split('x')
if ( !sizes.length ) {
throw new ReferenceError('no sizes provided');
}
if ( el[0].nodeName !== 'IMG' ) {
throw new ReferenceError('type of node must be IMG');
}
//
// apply same width and height
if ( sizes.length === 1 ) {
sizes.push.apply(sizes, sizes);
}
var observer = attrs.$observe('ngSrc', function ( newSrc ) {
_updateSrc( newSrc );
});
function _updateSrc( src ) {
var resizeUrl = imageResizeFactory( src, sizes[0], sizes[1] )
el.attr('src', resizeUrl);
}
}
}
})
这不起作用,因为该指令和角度 ngSrc 指令之间存在冲突,在我的自定义指令中修改了 src 属性后再次修改它。我想知道在 ngSrc 插值后是否有修改“src”的解决方法。
我也在考虑使用过滤器。你怎么看待这件事? 我想就这个问题得到一些反馈。
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-filter