从控制器设置片段的聚合文本

时间:2014-12-04 11:36:38

标签: sapui5

我有一个xml片段。我将items设为"{path: '/idFamiglia' }"

<core:FragmentDefinition
  xmlns="sap.m"
  xmlns:core="sap.ui.core">
  <SelectDialog
    id="idSelectDialog"
    noDataText="Nessun dato"
    title="Suggerimento"
    search="handleLocalSearch"
    liveChange="handleLocalSearch"
    confirm="handleClose"
    close="handleClose"
    items="{
      path: '/idFamiglia'
    }">
    <StandardListItem
      title="{title}"
      description="{description}"
      icon="" 
      iconDensityAware="false"
      iconInset="false"
      type="Active" />
  </SelectDialog>
</core:FragmentDefinition>

从控制器我想设置此字符串。我尝试这种方法:

handleValueLocalHelp : function(oEvent) {
        this.inputId = oEvent.oSource.sId;
        if (!this._oDialog) {
            this._oDialog = sap.ui.xmlfragment("ui5bp.view.fragment.HintLocalDialog",this);
        }
        //1
        sap.ui.getCore().byId("idSelectDialog").setAggregation("items", "{path: '/idFamiglia'}");
        //2
        this._oDialog.bindElement("/idFamiglia");
        //3
        sap.ui.getCore().byId("idSelectDialog").bindElement("/idFamiglia");

        this._oDialog.setModel(this.getView().getModel("hint"));
        // toggle compact style
        jQuery.sap.syncStyleClass("sapUiSizeCompact", this.getView(), this._oDialog);
        this._oDialog.open();
    },

我有一些错误..

  1. Uncaught Error: Aggregation 'items' of Element sap.m.List#idSelectDialog-list used with wrong cardinality (declared as 0..n)如果我尝试forst模式
  2. 如果我尝试第二种模式,则不会更改字符串
  3. 相同的行为
  4. 如何从控制器修改聚合字符串(例如items

2 个答案:

答案 0 :(得分:1)

由于您使用的控件(SelectDialog),“item”聚合只能与sap.m.ListItemBase[]一起使用,而我可以看到您与' / idFamiglia '绑定。这不是属性绑定,它可以聚合绑定。

var oSelectDialog = new sap.m.SelectDialog({
                multiSelect : true,
                title : "Title",
                items: {
                    path: "/",
                    template: new sap.m.StandardListItem({
                        title: "{text}",
                        description: "{key}"
                        //selected: "{JSON>selected}" 
                    })
                },
                rememberSelections : true,
            });

答案 1 :(得分:0)

我尝试了一种解决方案,通过XML-view设置默认片段,并从控制器中对其进行个性化设置:

handleValueLocalHelp : function(oEvent) {
        this.inputId = oEvent.oSource.sId;
        if (!this._oDialog) {
            this._oDialog = sap.ui.xmlfragment("ui5bp.view.fragment.HintLocalDialog",this);
            this._oDialog._dialog.mAggregations.content[1].mBindingInfos.items.path="/idFamiglia";      
}