2015-09-11 58 views
2

我可能會繞過這個錯誤,但我想創建一個自定義控件,它是sap.m.Dialog的子類。這個新的控件將有一個聚合'leftImage',然後將其放置在Horizo​​ntalLayout(私有變量)中。但是,這可能會導致錯誤,因爲'leftImage'已經是我的控件的依賴項。自定義控件 - 如何在另一個控件中封裝聚合

那麼如何在另一個控件上封裝一個聚合?

回答

2

sap.m.Dialog已經有了一個「內容」聚合體來保存要呈現的控件,所以你只需要在那裏添加你的自定義位。

所以,像這樣的模式應該工作:

sap.ui.define([ 
    "jquery.sap.global", 
    "sap/m/Dialog", 
    "sap/m/Image", 
    "sap/ui/layout/HorizontalLayout" 
], function(jQuery, Dialog, Image, HorizontalLayout) { 
    "use strict"; 

    var MyDialog = Dialog.extend("sap.ui.mylib.MyDialog", { 
     metadata: { 
      library: "sap.ui.mylib", 
      associations: { 
       leftImage: {type: "sap.m.Image", multiple: false} 
      } 
     }, 
     renderer: { 
      // inherit rendering from sap.m.Dialog 
     } 
    }); 

    MyDialog.prototype.init = function() { 
     if (Dialog.prototype.init) { 
      Dialog.prototype.init.apply(this, arguments); 
     } 

     var oImage = new Image({ 
       src: '...' 
      }), 
      oHorizontalLayout = new HorizontalLayout({ 
       content: [ 
        oImage 
       ] 
      }); 

     this.addContent(oHorizontalLayout); 
    }; 

    return MyDialog; 
}, /* bExport= */ true); 

定義leftImage作爲關聯,因爲這將是由Horizo​​ntalLayout聚集。它可以稍後訪問:

var oLeftImage = sap.ui.getCore().byId(oMyDialog.getLeftImage()); 

您可能還想要將Horizo​​ntalLayout定義爲關聯,以便您可以添加更多內容。

+0

正是我在找的東西!謝謝! – tapsiturbi

相關問題