首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定制PrimeNG p文件PrimeNG

如何定制PrimeNG p文件PrimeNG
EN

Stack Overflow用户
提问于 2016-11-09 19:58:13
回答 2查看 25.5K关注 0票数 5

我们使用的是p-fileUpload,来自PrimeNG 1.0.0-beta.16

我想定制按钮。他们现在的标签是“选择”、“上传”和“取消”。我该怎么换标签?

另一个相关的问题。在选择一些文件后,会显示文件名和文件大小。如何更改文件大小的格式?它现在显示“877.271 KB”。这三个数字有点混乱。如何将其更改为仅显示1位数字:“877.2 KB”

我试过模板:

代码语言:javascript
复制
        <template let-file pTemplate type="file">
            <div>{{file.name}}</div>
            <div>{{file.size}}</div>
        </template>

现在我完全控制了文件的大小,我可以按我的意愿格式化它,但是我已经没有删除按钮了。我也需要重新实现这一点。这看起来有点过火,因为只改变了文件大小的格式。

EN

回答 2

Stack Overflow用户

发布于 2017-01-23 19:40:03

正如@Paul已经提到的,我们可以轻松地使用HTML属性修改3个标签:

代码语言:javascript
复制
<p-fileUpload name="myfile[]" 
              url="http://localhost:3000/upload"
              chooseLabel="My choose"
              uploadLabel="My upload"
              cancelLabel="My cancel"></p-fileUpload>

负责格式大小格式化的函数是:

代码语言:javascript
复制
FileUpload.prototype.formatSize = function (bytes) {
  if (bytes == 0) {
    return '0 B';
  }
  var k = 1000, 
      dm = 3, 
      sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],    
      i = Math.floor(Math.log(bytes) / Math.log(k));
  return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
};

我从https://unpkg.com/primeng@2.0.0-rc.1/components/fileupload/fileupload复制了它,因为我们可以看到dm变量负责浮点后的数字数。让我们把它从3修改为1,然后重写这个函数。

首先,导入FileUpload类:

代码语言:javascript
复制
import {FileUpload, FileUploadModule} from 'primeng/primeng';

其次,重写它的原型功能:

代码语言:javascript
复制
FileUpload.prototype.formatSize = function (bytes) {
  if (bytes == 0) {
    return '0 B';
  }
  var k = 1000, 
      dm = 1, 
      sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], 
      i = Math.floor(Math.log(bytes) / Math.log(k));
  return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
};

柱塞:http://plnkr.co/edit/yo6LyYgKlThcewtpjiyI?p=preview

票数 7
EN

Stack Overflow用户

发布于 2018-07-03 12:40:08

我不知道这是否仍然有帮助,但我已经在另一个网页上找到了解决这个问题的办法。首先,下面是html部分的代码:

代码语言:javascript
复制
<p-fileUpload #fileUploader name="file">
    <ng-template let-file pTemplate='file'>
        <div>{{file.name}}</div>
        <div>{{file.size | convertFileSize}}</div>
        <div><button icon="fa-close" pButton type="button" label="Remove" (click)="removeFile(file, fileUploader)"></button></div>
    </ng-template>
</p-fileUpload>

因此,该按钮在中调用自定义的removeFile函数,并将要删除的文件(由模板提供)和fileUpload组件本身传递给该方法,该方法如下:

代码语言:javascript
复制
removeFile(file: File, uploader: FileUpload) {
  const index = uploader.files.indexOf(file);
  uploader.remove(null, index);
}

通过分析原始组件的remove方法,我看到第一个param (在示例中为null )是一个MouseEvent,因此实际上可以将null替换为事件派生类。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40514986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档