2017-01-31 59 views
0

我的UI5應用程序和一個簡單的表單有問題。如探索應用程序的示例中所示。XML片段事件綁定到控制器不工作

這種情況下,按下編輯將替換片段的其他SimpleForm(控制器中的代碼隱藏)的內容。

我也這麼做;唯一的區別是我只是用存儲在XML片段中的控件替換SimpleForm的內容。

現在我有一個按鈕,該單擊事件應綁定到基礎控制器。但是當你在代碼隱藏中這樣做時,控制器上的事件不再被解僱。它在我的xml視圖定義文件中使用片段時起作用,但現在不行。

controllerModelPropertyChanged(oEvent: sap.ui.base.Event) { 
      let cdata = (oEvent.getSource() as any).getData() as agenttemplatesdetailcontroller; 
      let p = this.byId("form") as sap.ui.layout.form.SimpleForm; 
      for(let c of p.getContent()) 
       c.destroy(); 
      p.removeAllContent(); 
      let f = sap.ui.xmlfragment("ifm.datalink.linerecorder.ams.frontend.view.fragments.agentTemplates."+ (cdata.edit ? "AgentTemplateDetailsEdit" : "AgentTemplateDetailsDisplay")) as sap.ui.core.Control[]; 
      f.forEach((v) => { p.addContent(v); }); 
     } 

添加控件時綁定的事件對控制器沒有綁定嗎?我必須手動綁定它們嗎?

編輯:

顯示片段:

<core:FragmentDefinition 
     xmlns="sap.m" 
     xmlns:core="sap.ui.core" 
     xmlns:u="sap.ui.unified"> 
     <Label text="{i18n>templates.details.name}"/> 
     <Text text="{template>/Name}" enabled="{form>/enabled}"/> 
     <Label text="{i18n>templates.details.description}"/> 
     <Text text="{template>/Description}" editable="{form>/enabled}"/> 
     <List headerText="{i18n>templates.details.versionsTitle}" items="{template>/Versions}"> 
     <CustomListItem> 
      <HBox> 
      <Label text="{template>Version/Major}.{template>Version/Minor}.{template>Version/Build}"/> 
      <Label text=" ({parts: [{path: 'template>CreationDate', type: 'sap.ui.model.odata.type.Date'}, {path: 'i18n>global.dateformat', type: 'sap.ui.model.type.String'}], formatter: '.odatadateformatter'})"/> 
      <Label text="{ams>Guarantor/username}"/> 
      </HBox> 
      </CustomListItem> 
     </List> 
</core:FragmentDefinition> 

編輯片段:

<core:FragmentDefinition 
     xmlns="sap.m" 
     xmlns:core="sap.ui.core" 
     xmlns:u="sap.ui.unified"> 
     <Label text="Name"/> 
     <Input value="{template>/Name}" enabled="{form>/enabled}"/> 
     <Label text="Description"/> 
     <TextArea value="{template>/Description}" editable="{form>/enabled}"/> 
     <Label text="Upload new Version"/> 
     <u:FileUploader id="fileUploader" name="MyFileUpload" uploadUrl="http://localhost:13917/api/fileupload/uploadfile" tooltip="Upload your file to the local server" uploadComplete="handleUploadComplete"/> 
     <Button text="Upload File" press="AddNewTemplateVersion"/> 
     <List headerText="{i18n>templates.details.versionsTitle}" items="{template>/Versions}"> 
     <CustomListItem> 
      <HBox> 
      <Label text="{template>Version/Major}.{template>Version/Minor}.{template>Version/Build}"/> 
      <Label text=" ({parts: [{path: 'template>CreationDate', type: 'sap.ui.model.odata.type.Date'}, {path: 'i18n>global.dateformat', type: 'sap.ui.model.type.String'}], 
          formatter: '.odatadateformatter'})"/> 
      <!--<Label text="{ams>Guarantor/username}"/>--> 
      </HBox> 
      </CustomListItem> 
     </List> 
    </core:FragmentDefinition> 

查看:

<mvc:View 
     controllerName="ifm.datalink.linerecorder.ams.frontend.controller.agentTemplates.AgentTemplatesDetail" 
     xmlns="sap.m" 
     xmlns:core="sap.ui.core" 
     xmlns:commons="sap.ui.commons" 
     xmlns:f="sap.ui.layout.form" 
     xmlns:l="sap.ui.layout" 
     xmlns:mvc="sap.ui.core.mvc"> 
    <f:SimpleForm 
      class="lra5form" 
      minWidth="500" 
      maxContainerCols="2" 
      layout="ResponsiveGridLayout" 
      title="{i18n>templates.details.title}" 
      editable="{controller>/edit}" 
      labelSpanL="3" 
      labelSpanM="3" 
      emptySpanL="4" 
      emptySpanM="4" 
      columnsL="1" 
      columnsM="1" 
      id="form"> 
    <f:toolbar> 
     <Toolbar> 
     <Button text="{i18n>templates.details.edit}" icon="sap-icon://edit" enabled="{= !${controller>/edit}}" press="onEditPressed" /> 
     <Button text="{i18n>templates.details.delete}" icon="sap-icon://delete" press="onDelete" visible="{= !${controller>/edit}}" /> 
     <ToolbarSpacer/> 
     <Button text="{i18n>global.accept}" icon="sap-icon://accept" press="onAcceptClicked" visible="{controller>/edit}" enabled="{controller>/changed}"/> 
     <Button text="{i18n>global.cancel}" icon="sap-icon://cancel" press="onCancelClicked" visible="{controller>/edit}" /> 
     </Toolbar> 
    </f:toolbar> 
    <f:content> 
     <core:Fragment fragmentName="ifm.datalink.linerecorder.ams.frontend.view.fragments.agentTemplates.AgentTemplateDetailsDisplay" type="XML"/> 
    </f:content> 
    </f:SimpleForm> 
</mvc:View> 
+0

,你引用片段+片段代碼可以共享視圖的XML聲明? –

+0

你在這裏,謝謝你的幫助。我沒有更改我的控制器上的事件處理程序的名稱。 –

+0

我沒有看到按鈕=「controllerModelPropertyChanged」事件,哪一個應該調用該函數? –

回答