我从服务器端获取数据以及文件名,问题是,文件名是扩展名,例如1125495.jpg或533123.png,在我的应用程序中我试图获取此图像的缩略图,这是存储在服务器中为1125495-160x160.jpg和533123-160x160.png
我可以使用过滤器吗?或者我是否应该要求在服务器端进行修改?
答案 0 :(得分:3)
你可以这样做
var app = angular.module('starter', []);
app.filter('thumbnail', function() {
return function(input) {
var parts = input.split(".");
var file = parts[0]+"-"+"160x160"+"."+parts[1];
return file;
};
});
app.controller('MainCtrl', function($scope, $filter) {
$scope.files = [
"1125495.jpg",
"533123.png"
];
});
答案 1 :(得分:0)
是的,你可以在这里使用angularjs $filter
创建一个接受images数组的过滤器和缩略图名称的参数,并遍历数组并创建缩略图名称并返回缩略图数组
app.filter("fileNameFilter", function() {
return function (input, thumbnail) {
var thumbnailArray = [];
angular.forEach(input , function(value, key) {
var parts = value.split(".");
var thumb_name = parts[0]+"-"+thumbnail+"."+parts[1];
thumbnailArray .push(thumb_name);
});
return thumbnailArray ;
}
});
控制器中的你可以将过滤器调用为,
app.controller('MainCtrl', function($scope, $filter) {
$scope.files = [
"1125495.jpg",
"533123.png"
];
$scope.filteredFiles = $filter('fileNameFilter')($scope.files, "160x160");
});
<强>更新强>
如果您的图片在
中$scope.files = [
{name : "name1" , image : "1125495.jpg"},
{name : "name2" , image : "533123.png"}
];
您可以更改过滤器,如
app.filter("fileNameFilter", function() {
return function (input, thumbnail) {
var thumbnailArray = [];
angular.forEach(input , function(value, key) {
var parts = value.image.split("."); // value.image
var thumb_name = parts[0]+"-"+thumbnail+"."+parts[1];
thumbnailArray .push(thumb_name);
});
return thumbnailArray ;
}
});
我的顾虑是从服务器端发送缩略图名称。看起来更清洁