【问题标题】:Why does my UI5 FileUploader not react to changed property values?为什么我的 UI5 FileUploader 对更改的属性值没有反应?
【发布时间】:2021-09-22 08:24:16
【问题描述】:

我有一个 UI5-FileUploader。

<u:FileUploader
id="fileUploader"
uploadUrl="upload/" width="100%" uploadComplete="handleUploadComplete" typeMissmatch="handleTypeMissmatch style="Emphasized" fileType="{view>/uploadType}"/>

ViewModel 包含此条目:

const modelData = {uploadType: "xlsx"}

文档搜索会混合出任何与“Microsoft Excel 工作表 (*.xlsx)”as can be seen here 类型不匹配的文档

但是,我希望单选按钮触发器将 fileType 更改为 csv 并返回。 通常这是通过改变模型值来实现的

oModel.setProperty("/uploadType", "csv"); 
oModel.refresh(true);

或者,如果没有直接定义绑定

this.getView().byId("fileUploader").setFileType("csv");

虽然fileType 属性在这两种情况下都正确更新、具有有效值且未显示错误,但文档搜索窗口保持不变,仍会搜索“*.xlsx”文档。为什么会这样?

【问题讨论】:

  • 为什么要通过文件类型切换来惹恼用户。可以同时启用吗?
  • 仅供参考:oModel.refresh(true); 不需要。 UI5 正在为你做这件事。查看双向绑定:sapui5.hana.ondemand.com/#/topic/…

标签: javascript data-binding sapui5


【解决方案1】:

它在当前 ui5 版本,OSX 上的 chrome 中按预期工作。

sap.ui.controller("view1.initial", {

  onInit: function(oEvent) {
    this._oModel = new sap.ui.model.json.JSONModel({
        uploadType: "xlsx"
     });
    this.getView().setModel( this._oModel);
  },

  onSelect: function(oEvent) {
    if (this._oModel.getProperty("/uploadType") === 'pdf') {
       this._oModel.setProperty("/uploadType", "xlsx");
    } else {
      this._oModel.setProperty("/uploadType", "pdf");
    }
  }
});

sap.ui.xmlview("main", {
  viewContent: jQuery("#view1").html()
}).placeAt("uiArea");
<script id="sap-ui-bootstrap" src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js" data-sap-ui-theme="sap_bluecrystal" data-sap-ui-xx-bindingSyntax="complex" data-sap-ui-compatVersion="edge" data-sap-ui-libs="sap.m"></script>

<div id="uiArea"></div>

<script id="view1" type="ui5/xmlview">
  <mvc:View controllerName="view1.initial" xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns:u="sap.ui.unified">
    <Text text="{/uploadType}" />
    <RadioButtonGroup select="onSelect">
      <RadioButton text="xlsx" selected="true" />
      <RadioButton text="pdf" />
    </RadioButtonGroup>
    <u:FileUploader id="fileUploader" name="myFileUpload" uploadUrl="upload/" fileType="{/uploadType}" />
  </mvc:View>
</script>

【讨论】:

  • 您好,非常感谢。我已经将此 sn-p 1:1 复制到我的项目中,替换了我现有的元素和功能,但它不起作用。有趣的是,它确实可以在较旧的 git-branch 中工作。你知道什么会干扰吗?好像也不是浏览器的问题。
  • 您的 ui5 版本、浏览器、操作系统是什么?你如何创建你的 json 模型?您必须提供一个可重现的示例来通过 stack-overflow 解决此问题
  • (不要忘记 ▲ 点赞有帮助的答案,并 ✓+▲ 接受并点赞帮助您解决问题的答案!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-14
  • 2020-08-08
  • 1970-01-01
  • 2012-02-16
  • 2017-05-23
  • 2020-10-15
  • 1970-01-01
相关资源
最近更新 更多