使用 angularjs 过滤文件名
Filter file name with angularjs
我从服务器端获取数据和文件名,问题是,文件名带有扩展名,例如 1125495.jpg 或 533123.png,在我的应用程序中,我试图获取缩略图对于此图像,它在服务器中存储为 1125495-160x160.jpg 和 533123-160x160.png
这是我可以使用过滤器来做还是我应该在服务器端要求修改?
是的,您可以在此处使用 angularjs $filter
创建接受图像数组和缩略图名称参数的过滤器,并遍历数组并创建缩略图名称和return缩略图数组
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");
});
这里是 Demo Plunker
更新
如果你的图片喜欢
$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 ;
}
});
这里是 Demo Plunker
我担心的是从服务器端发送缩略图名称。看起来更干净了
你可以这样做
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"
];
});
检查这个codepen http://codepen.io/anon/pen/LExayW
我从服务器端获取数据和文件名,问题是,文件名带有扩展名,例如 1125495.jpg 或 533123.png,在我的应用程序中,我试图获取缩略图对于此图像,它在服务器中存储为 1125495-160x160.jpg 和 533123-160x160.png
这是我可以使用过滤器来做还是我应该在服务器端要求修改?
是的,您可以在此处使用 angularjs $filter
创建接受图像数组和缩略图名称参数的过滤器,并遍历数组并创建缩略图名称和return缩略图数组
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");
});
这里是 Demo Plunker
更新
如果你的图片喜欢
$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 ;
}
});
这里是 Demo Plunker
我担心的是从服务器端发送缩略图名称。看起来更干净了
你可以这样做
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"
];
});
检查这个codepen http://codepen.io/anon/pen/LExayW