SAPUI5 (10) - XMLView

SAPUI5 Demo Kit的示例程序,大多使用的是XMLView,所以开发ui5程序必须掌握xmlview。简单地说,xmlview相对于前面的javascript,主要的变化在view的部分,其它基本不变。我们本篇就把之前mvc的两支程序,从JavaScript View,翻译为XMLView。

首先是Button Click程序,项目文件的结构如下:

对于xmlview来说,view文件的命名规范是*.view.xml。我们先看index.html,因为其它部分不变,我们只贴出application area部分。

<script>
    jQuery.sap.registerModulePath("button_demo", "./button_demo/");
    
    var oApp = new sap.m.App({initialPage: "masterPage"});
    var oView = sap.ui.view({
        id: "masterPage",
        viewName: "button_demo.button",
        type: sap.ui.core.mvc.ViewType.XML
    });
    
    oApp.addPage(oView);
    oApp.placeAt("content");
    
</script>

如果使用sap.ui.view()工厂函数,type参赛变为sap.ui.core.mvc.ViewType.XML, 也可以简写为type: "XML"

另外,我们也可以使用sap.ui.xmlview(),因为view的类型已经明确,就没有type参数。

Button click程序的xmlview实现

index.html

<script>
    jQuery.sap.registerModulePath("button_demo", "./button_demo/");
    
    var oApp = new sap.m.App({initialPage: "masterPage"});
    var oView = sap.ui.xmlview({
        id: "masterPage",
        viewName: "button_demo.button"      
    });
    
    oApp.addPage(oView);
    oApp.placeAt("content");
    
</script>

View

而view(button.view.xml)完全变成了声明式:

<core:View 
        xmlns="sap.m"
        xmlns:core="sap.ui.core" 
        xmlns:mvc="sap.ui.core.mvc"
        xmlns:html="http://www.w3.org/1999/xhtml"
        controllerName="button_demo.button" >
        
    <Page title="Button using XMLView Demo">
        <content>
            <Button text="Click me." press="onButtonClicked" />
        </content>
    </Page>
</core:View>

注意在声明View的标签中,主要是声明namespacecontroller name。本代码中,只需要用到sap.m.Pagesap.m.Button,所以把空的的namespace设定为sap.m: xmlns="sap.m"

Controller

controller代码和之前一样,写法没有区别:

sap.ui.define(
    ["sap/ui/core/mvc/Controller"], 
    function(Controller){
        "use strict";

        return Controller.extend("button_demo.button", {
            onButtonClicked: function() {
                sap.m.MessageToast.show("Hello!",{
                    my: "center center",
                    at: "center center"
                });
            }
        });
    }
);

这次使用sap.m.MessageToast来显示消息,MessageToast对用户操作提供一种简单的反馈,并且经过一段时间后自动消失,除非用户将鼠标放在消息上面。MessageToast的默认位置在屏幕下方正中间的位置,我把它放在屏幕的正中间。

显示供应商的xmlview实现

贴出之前view代码和xmlview代码的对比,相当于汉译英,主要是熟悉语法要领,没有太多需要讲。

javascript view

sap.ui.jsview("suppliers.supplieroverview", {

    /** Specifies the Controller belonging to this View. 
    * In the case that it is not implemented, or that "null" is returned, this View does not have a Controller.
    * @memberOf suppliers.supplieroverview
    */ 
    getControllerName : function() {
        return "suppliers.supplieroverview";
    },

    /** Is initially called once after the Controller has been instantiated. It is the place where the UI is constructed. 
    * Since the Controller is given to this method, its event handlers can be attached right away. 
    * @memberOf suppliers.supplieroverview
    */ 
    createContent : function(oController) {
        // define columns and table
        var oColumns = [
            new sap.ui.table.Column({
                label: new sap.m.Label({text:"ID"}),
                template: new sap.m.Text().bindProperty("text", "ID"),
                sortProperty: "ID",
                width: "50px"
            }),
            new sap.ui.table.Column({
                label: new sap.m.Label({text:"Name"}),
                template: new sap.m.Text().bindProperty("text", "Name"),
                sortProperty: "ID",
                width: "100px"
            })
        ];  
        
        var oTable = new sap.ui.table.Table({
            width: "100%",
            title: "供应商列表",
            visibleRowCount: 2,
            firstVisibleRow: 0,
            editable: false,
            selectionMode: sap.ui.table.SelectionMode.Single,
            columns: oColumns
        });         

        oTable.bindRows("/Suppliers");      
        
        var oPage = new sap.m.Page({
            title: "供应商",
            content: [oTable]
        });
        
        return oPage;
    }
    
});

xmlview

请与上面的代码比较。

<core:View xmlns="sap.m"
    xmlns:core="sap.ui.core" 
    xmlns:mvc="sap.ui.core.mvc" 
    xmlns:t="sap.ui.table"
    xmlns:html="http://www.w3.org/1999/xhtml"
    controllerName="suppliers.supplieroverview" >
    
    <Page title="供应商">
        <content>
            <t:Table width="100%" title="供应商清单" visibleRowCount="2"
                    firstVisibleRow="0" editable="false"
                    selectionMode="Single" rows="{/Suppliers}">
                    <t:columns>
                        <t:Column sortProperty="ID" width="50px">
                            <Label text="ID" />
                            <t:template>
                                <Text text="{ID}"/>
                            </t:template>
                        </t:Column>
                        <t:Column label="Name" sortProperty="Name" width="100px">
                            <Label text="Name"/>
                            <t:template>
                                <Text text="{Name}"/>
                            </t:template>
                        </t:Column>
                    </t:columns>                    
            </t:Table>
        </content>
    </Page>
</core:View>
  • 因为Table的namespace是sap.ui.table.Table, 所以申明namespace: xmlns:t="sap.ui.table"。xml中就可以表示为<t:Table> ... </t:Table>
  • 如果属性是简单类型,可以直接作为atrribute的方式来申明,如Table的width属性、title属性
  • 如果属性是Aggregation和Association,则使用子标签,如Column的Label,是sap.m.Label
  • 绑定的语法稍有差异。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容