SAPUI5如何通过扩展现有控件来创建自定义控件

时间:2015-06-14 11:03:22

标签: javascript jquery jquery-ui sapui5

我必须自定义现有控件(FacetFilter)的功能。我无法自定义FacetFilter渲染器的功能。能帮到我吗?

我在xml中的代码是

module test_int
contains
  subroutine final(FCN, x, f, n)
    interface
      SUBROUTINE FCN (X, F, N)
        INTEGER             N
        DOUBLE PRECISION    X(N), F(N)
      END SUBROUTINE
    end interface
    integer          :: n
    double precision :: x(n), f(n)
    call FCN(x,f,n)
  end subroutine
end module

module test_fct
contains
  subroutine FCN(X, F, N) 
    integer          :: n
    double precision :: x(n), f(n)
    print *,X ; print *,F ; print *,N
  end subroutine
end module

program prova
  use, intrinsic :: iso_fortran_env
  use test_int
  use test_fct
  implicit none
  integer,parameter :: n=2
  double precision  :: x(n), f(n)
  x = [ 1.d0, 2.d0 ]
  f = [ 3.d0, 4.d0 ]
  call final(FCN, x, f, n)
end program prova

我试图扩展控制,我试过的代码如下,

<FacetFilter
    id="idFacetFilter"
    type="Simple"
    showPersonalization="true"
    showReset="true"
    reset="handleFacetFilterReset"
    lists="{/ProductCollectionStats/Filters}">
    <lists>
      <FacetFilterList
        title="{type}"
        key="{key}"
        active="false"
        multiselect="true"
        listClose="handleListClose"
        items="{values}" >
        <items>
          <FacetFilterItem
            text="{text}"
            key="{key}"
            count="{data}" />
        </items>
      </FacetFilterList>
    </lists>
 </FacetFilter>

我只是扩展,因为我想要该控件的所有功能。我不想修改任何东西。我有如下的渲染器文件。

jQuery.sap.declare("control.CustomFacetFilter");
sap.m.FacetFilter.extend("control.CustomFacetFilter", {});

我只是复制粘贴代码,我在该渲染器内修改了代码 当我运行此代码时,找不到它的显示lists.js,但这里列表是FacetFilter中的一个聚合。如果我们在xml中观察到,FacetFilter是最顶层的父级,它有一个子级(FacetFilterList),而子级又有另一个子级(FacetFilterItem)。我已经在这里扩展了控件FacetFilter,这意味着我得到了FacetFilter的所有属性到我的CustromFilter是吗?但是仍然没有找到它的显示lists.js。我很困惑如何在这种情况下创建自定义控件你可以帮助我。

1 个答案:

答案 0 :(得分:2)

sap.ui.define(['./HerePathToFacetFilterRenderer', 'sap/ui/core/Renderer'],
function(FacetFilterRenderer, Renderer) {
"use strict";

    var CustomFacetFilterRenderer = Renderer.extend(FacetFilterRenderer);

    //... here your custom implementation, overwrite of base methods or hooks


return CustomFacetFilterRenderer;

}, /* bExport= */ true);

请参阅继承自InputBase的TextAreaRenderer https://github.com/SAP/openui5/blob/master/src/sap.m/src/sap/m/TextAreaRenderer.js

实际上,文档应该通过扩展现有控件的其他方式提供更多帮助 https://openui5.hana.ondemand.com/#docs/guide/bcee26a4801748f39bf5698d83d903aa.html