zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    vim 高级功能
    Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
    Vim高手,从来不用鼠标
    zookeeper的leader选举机制个人总结
    【JVM】GC之垃圾收集算法
    【软件工程】常见的几种软件过程模型的比较
    【设计模式】适配器模式
    【计算机网络】网络的硬件构成要素
    【计算机网络】ISO/OSI 网络体系结构
    【Spring Cloud】Spring Cloud Config 实现分布式配置中心
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/15194483.html
Copyright © 2011-2022 走看看