Angular UI 网格:如果图像存在于单独的服务器上则渲染图像,否则设置默认图像
Angular UI Grid : render image if it exist on a separate server otherwise set a default image
我正在使用 Angular UI Grid,我已经查阅了几个 stack overflow 和其他博客,但似乎仍然无法解决问题。我有一个指令,但仍然一无所获。
问题
如果图像存在于单独的服务器上,我想在 UI 网格 table 上呈现图像,否则将其设置为默认图像。我构建了一个自定义指令并将该指令注入 UI 网格 columnDefs。如果有错误,我的指令会显示默认图像。问题是它没有显示现有服务器上可用的图像。
我已附上我的 Plunkr:http://plnkr.co/edit/ZDHI3cfUWaa7NllGXZeL。 Plunkr 似乎没有工作,但我的实际代码是。我想分享所有相关代码,以便您在 Plunkr 上拥有所有必要的代码。
PS. 我需要在 profile_image_url 上添加前缀 url (www.bucketfeet.com) 才能获取图像.但是,有些 URL 是云前端 URL(http://d153fwbf2sefnf.cloudfront.net) which is their CDN. If it starts with http:// I don’t need to prepend http://www.bucketfeet.com。否则,我会这样做。
指令
app.directive('imageRender', function () {
var imageRenderTableView = {
restrict: 'AE',
template: '<img width=20px src="http://google.com/favicon.ico" ng-src="www.bucketfeet.com/{{data.profile_image_url}}">',
link: function(scope, element, attrs) {
var defaultSrc = attrs.src;
element.bind('error', function() {
if(defaultSrc) {
element.attr('src', defaultSrc);
}
else if(attrs.ngSrc) {
element.attr('ngSrc', attrs.ngSrc);
}
});
}
}
return imageRenderTableView;
});
在 columnDefs 中插入指令
{name:'img', width: 50, cellTemplate:"<image-render></image-render>", enableSorting: false}
HTML
<div ui-grid="gridOptions" ui-grid-pagination class="grid"></div>
我的屏幕
请参阅 Plunkr 了解 JSON 以及我如何在 Angular 服务上检索数据。
我刚刚解决了这个问题。我试图解决的问题是在 Angular Ui-Grid table 中渲染图像(如果它们存在于外部服务器上)。否则,显示默认图像。
您必须使用 row.entity.FIELDNAME。在我的例子中,它是 row.entity.profile_image_url 因为那是我的对象 属性.
指令
app.directive('imageRender', function () {
var imageRenderTableView = {
restrict: 'AE',
template: '<img width=20px src="imgs/art.jpg" ng-src="{{row.entity.profile_image_url}}">',
link: function(scope, element, attrs) {
var defaultSrc = attrs.src;
element.bind('error', function() {
if(defaultSrc) {
element.attr('src', defaultSrc);
}
else if(attrs.ngSrc) {
element.attr('ngSrc', attrs.ngSrc);
}
});
}
}
return imageRenderTableView;
});
您在 Angular UI Table 的列定义中将指令作为 HTML 属性传入。见下文:
columnDefs: [
{name:'img', width: 50, cellTemplate:"<image-render></image-render>", enableSorting: false},
]
HTML
<div ui-grid="gridOptions" ui-grid-pagination class="grid"></div>
PS- 第二部分
我通过使用普通的 javascript concat 方法和 运行 一个 forEach 方法通过我的对象数组为我的 profile_image_url 添加了前缀。
如果有人正在研究在 Angular UI 网格上动态渲染图像,希望这会有所帮助。 Angular 指令是一个可行的方法!!!!
我正在使用 Angular UI Grid,我已经查阅了几个 stack overflow 和其他博客,但似乎仍然无法解决问题。我有一个指令,但仍然一无所获。
问题
如果图像存在于单独的服务器上,我想在 UI 网格 table 上呈现图像,否则将其设置为默认图像。我构建了一个自定义指令并将该指令注入 UI 网格 columnDefs。如果有错误,我的指令会显示默认图像。问题是它没有显示现有服务器上可用的图像。
我已附上我的 Plunkr:http://plnkr.co/edit/ZDHI3cfUWaa7NllGXZeL。 Plunkr 似乎没有工作,但我的实际代码是。我想分享所有相关代码,以便您在 Plunkr 上拥有所有必要的代码。
PS. 我需要在 profile_image_url 上添加前缀 url (www.bucketfeet.com) 才能获取图像.但是,有些 URL 是云前端 URL(http://d153fwbf2sefnf.cloudfront.net) which is their CDN. If it starts with http:// I don’t need to prepend http://www.bucketfeet.com。否则,我会这样做。
指令
app.directive('imageRender', function () {
var imageRenderTableView = {
restrict: 'AE',
template: '<img width=20px src="http://google.com/favicon.ico" ng-src="www.bucketfeet.com/{{data.profile_image_url}}">',
link: function(scope, element, attrs) {
var defaultSrc = attrs.src;
element.bind('error', function() {
if(defaultSrc) {
element.attr('src', defaultSrc);
}
else if(attrs.ngSrc) {
element.attr('ngSrc', attrs.ngSrc);
}
});
}
}
return imageRenderTableView;
});
在 columnDefs 中插入指令
{name:'img', width: 50, cellTemplate:"<image-render></image-render>", enableSorting: false}
HTML
<div ui-grid="gridOptions" ui-grid-pagination class="grid"></div>
我的屏幕
我刚刚解决了这个问题。我试图解决的问题是在 Angular Ui-Grid table 中渲染图像(如果它们存在于外部服务器上)。否则,显示默认图像。
您必须使用 row.entity.FIELDNAME。在我的例子中,它是 row.entity.profile_image_url 因为那是我的对象 属性.
指令
app.directive('imageRender', function () {
var imageRenderTableView = {
restrict: 'AE',
template: '<img width=20px src="imgs/art.jpg" ng-src="{{row.entity.profile_image_url}}">',
link: function(scope, element, attrs) {
var defaultSrc = attrs.src;
element.bind('error', function() {
if(defaultSrc) {
element.attr('src', defaultSrc);
}
else if(attrs.ngSrc) {
element.attr('ngSrc', attrs.ngSrc);
}
});
}
}
return imageRenderTableView;
});
您在 Angular UI Table 的列定义中将指令作为 HTML 属性传入。见下文:
columnDefs: [
{name:'img', width: 50, cellTemplate:"<image-render></image-render>", enableSorting: false},
]
HTML
<div ui-grid="gridOptions" ui-grid-pagination class="grid"></div>
PS- 第二部分 我通过使用普通的 javascript concat 方法和 运行 一个 forEach 方法通过我的对象数组为我的 profile_image_url 添加了前缀。
如果有人正在研究在 Angular UI 网格上动态渲染图像,希望这会有所帮助。 Angular 指令是一个可行的方法!!!!