• Step 17: Fragment Callbacks


    Step 17: Fragment Callbacks

    添加对话框的事件逻辑代码

    由于Fragment 不像view那样绑定controller,所以要想添加逻辑代码必须给它一个controller,也是就创建它的时候使用controller属性,this的含义是当前的controller。

    this.pDialog = Fragment.load({
    					id: oView.getId(),
    					name: "sap.ui.demo.walkthrough.view.HelloDialog",
    					controller: this
    				}).then(function (oDialog) {
    					// connect dialog to the root view of this component (models, lifecycle)
    					oView.addDependent(oDialog);
    					return oDialog;
    				});
    

    webapp/controller/HelloPanel.controller.js

    sap.ui.define([
    	"sap/ui/core/mvc/Controller",
    	"sap/m/MessageToast",
    	"sap/ui/core/Fragment"
    ], function (Controller, MessageToast, Fragment) {
    	"use strict";
    
    	return Controller.extend("sap.ui.demo.walkthrough.controller.HelloPanel", {
    
    		onShowHello : function () {
    			// read msg from i18n model
    			var oBundle = this.getView().getModel("i18n").getResourceBundle();
    			var sRecipient = this.getView().getModel().getProperty("/recipient/name");
    			var sMsg = oBundle.getText("helloMsg", [sRecipient]);
    
    			// show message
    			MessageToast.show(sMsg);
    		},
    
    		onOpenDialog : function () {
    			var oView = this.getView();
    
    			if (!this.pDialog) {
    				this.pDialog = Fragment.load({
    					id: oView.getId(),
    					name: "sap.ui.demo.walkthrough.view.HelloDialog",
    					controller: this
    				}).then(function (oDialog) {
    					// connect dialog to the root view of this component (models, lifecycle)
    					oView.addDependent(oDialog);
    					return oDialog;
    				});
    			} 
    			this.pDialog.then(function(oDialog) {
    				oDialog.open();
    			});
    		},
    
    		onCloseDialog : function () {
    			// note: We don't need to chain to the pDialog promise, since this event-handler
    			// is only called from within the loaded dialog itself.
    			this.byId("helloDialog").close();
    		}
    	});
    
    });
    

    把HelloPanel的controller给它用。
    注意controller属性的值不是必须是controller,可以是任何object

    this.byId("helloDialog")是得到对话框对象,
    注意:这里不需要使用promise,因为调用它的时候,对话框肯定已经被加载完毕了。

    webapp/view/HelloDialog.fragment.xml

    <core:FragmentDefinition
       xmlns="sap.m"
       xmlns:core="sap.ui.core" >
       <Dialog
          id="helloDialog"
          title ="Hello {/recipient/name}">
          <beginButton>
             <Button
                text="{i18n>dialogCloseButtonText}"
                press=".onCloseDialog"/>
          </beginButton>
       </Dialog>
    </core:FragmentDefinition>
    

    在fragment里加一个beginButton(也有与之对应的endButton),当按钮被按下后,调用 HelloPanel controller的onCloseDialog方法。

    webapp/i18n/i18n.properties

    # App Descriptor
    appTitle=Hello World
    appDescription=A simple walkthrough app that explains the most important concepts of SAPUI5
    
    # Hello Panel
    showHelloButtonText=Say Hello
    helloMsg=Hello {0}
    homePageTitle=Walkthrough
    helloPanelTitle=Hello World
    openDialogButtonText=Say Hello With Dialog
    dialogCloseButtonText=Ok
    

    vx:xiaoshitou5854

  • 相关阅读:
    李开复:如何设计你的2015年度计划(转)
    深入浅出 Java 多线程(转)
    maven常见问题汇总 专题
    Introduction to the Build Lifecycle
    具体解释EBS接口开发之WIP模块接口
    Shell脚本编程具体解释
    [数字图像处理]图像去噪初步(1)--均值滤波器
    hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
    响应式设计:理解设备像素,CSS像素和屏幕分辨率
    #define
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/15194483.html
Copyright © 2020-2023  润新知