View

Model View Controller (MVC)

模型视图控制器(MVC)中的视图层,用于负责定义和呈现用户UI,和控制器通常形成1:1的关系。

SAP UI5支持以下几种预定义视图类型:

  • HTML view
<template data-controller-name="ui5.demo.controller.htmlView">
    <div data-sap-ui-type="sap.m.App">
        <div data-sap-ui-type="sap.m.Page" data-title="htmlView">
            <div data-sap-ui-aggregation="content">
            </div>
        </div>
    </div>
</template>
  • JSON view
{
    "Type": "sap.ui.core.mvc.JSONView",
    "controllerName": "ui5.demo.controller.jsonView",
    "content": [{
        "Type": "sap.m.App",
        "pages": [{
            "Type": "sap.m.Page",
            "title": "jsonView",
            "content": []
        }]
    }]
}
  • JS view
sap.ui.jsview("ui5.demo.view.jsView", {
    getControllerName: function() {
        return "ui5.demo.controller.jsView";
    },
    createContent: function(oController) {
        var oPage = new sap.m.Page({
            title: "jsView",
            content: []
        });
        var app = new sap.m.App("myApp", {
            initialPage: "oPage"
        });
        app.addPage(oPage);
        return app;
    }
});
  • XML view
<mvc:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="ui5.demo.controller.xmlView"
    xmlns:html="http://www.w3.org/1999/xhtml">
    <App>
        <pages>
            <Page title="xmlView">
                <content></content>
            </Page>
        </pages>
    </App>
</mvc:View>

以上四种类型中最常用的是JS和Xml View,在SAP UI5官网Explord的例子中大多使用XML View,所以在这里重点介绍一下有关XML View的知识点

  • 命名空间(Namespace)
<mvc:View
   xmlns:mvc="sap.ui.core.mvc"
   controllerName="..."
   xmlns="sap.ui.layout"
   xmlns="sap.ui.layout.form">
</mvc:View>

即xmlns,在View标签里只能存在一个默认的xmlns,此命名空间不需要有前缀。前缀可以理解就是一个命名空间的别名,上面示例中的mvc就是一个别名,当然也可以改成其他的名称。
SAP UI5的控件库及其相关的子包的名称都可以映射为Namespace,如果我们使用的一个控件位于某个控件库的一个子包之中,在声明命名空间需要将这个子包做单独的声明

<mvc:View controllerName="ui5.demo.controller.xmlView" xmlns:l="sap.ui.layout" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc"
    xmlns="sap.ui.commons">
    <l:Splitter height="200px" orientation="Vertical">
        <Label text="label 1">
            <layoutData><l:SplitterLayoutData size="30%"/></layoutData>
        </Label>
        <Label text="label 2">
            <layoutData><l:SplitterLayoutData size="70%"/></layoutData>
        </Label>
    </l:Splitter>
</mvc:View>
  • 控件的属性
    控件的属性在XML用xml属性的方式表示。一个控件的属性名称可在API中的查到。对于属性中的值,如果涉及一些特殊符号,如<或者&需要用到转义符,例如:
<Text text="this is a text <" />
  • 在XML中使用HTML语言
    若想在SAPUI5中使用HTML,仅需加入XHTML的namespacexmlns:html="http://www.w3.org/1999/xhtml",如
<mvc:View controllerName="sap.hcm.Address" xmlns="sap.ui.commons" xmlns:mvc="sap.ui.core.mvc"
           xmlns:html="http://www.w3.org/1999/xhtml">
   <Panel>
      <Button text="Press Me. I am an SAPUI5 Button"/>
      <html:button>No, press me. I am native HTML Button.</html:button>
   </Panel>
</mvc:View>

运行后的效果:
在XML中使用Native HTML
  • 应用自定义样式到SAPUI5控件中
    使用HTML标签库
<html:style>
        .mySuperRedButton { 
        font-style: italic;
                color:red
        } 
</html:style>
<Panel>
   <Button class="mySuperRedButton" text="Press Me"/>
</Panel>
引入自定义样式
  • Aggregation 和 Association
    简单控件独立存在,但界面上控件有时还要以某种关系存在。
  1. 第一种关系是 包含关系 。比如容器控件中包含其他控件,又比如
    radioButtonGroup 包含若干个 radioButton 。这种关系中的控件分别称为父控件 ( parent control ) 和子控件 ( child control ) 。父控件对其它控件的参照称为聚合 ( aggregation )。
    Aggregation 关系中,各个子控件的生命周期依赖于父控件,当父控件销毁的时候,子控件也被销毁。另外,子控件不使用 placeAt() 方法放在
    DOM 对象中,而是利用父控件的方法添加到父控件的集合中,由父控件来渲染。
  2. 第二种关系叫做 association,指一个控件参照到另外一个控件。按照 web设计的 ARIA 兼容原则 ( ARIA: Accessible Rich Internet Applications ),如果某两个控件之间存在一定联系这两个控件应该关联起来。例如label 和 radioButtonGroup,而通过查看 radioButtonGroup 的 API,可以设置其association属性ariaLabelledBy,和 Aggregation 不同的是,Association 中父子控件的生命周期是独立的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容