现在我们已经设置了视图和控制器,现在是时候考虑MVC中的M了。

我们将在app中添加一个输入字段,将它的值绑定到模型上,并将相同的值绑定到输入字段的描述上。描述将根据用户类型直接更新。

Preview

 

An input field and a description displaying the value of the input field

Coding

You can view and download all files at Walkthrough - Step 7.

 

webapp/controller/App.controller.js

sap.ui.define([

   "sap/ui/core/mvc/Controller",

   "sap/m/MessageToast",

   "sap/ui/model/json/JSONModel"

], function (Controller, MessageToast, JSONModel) {

   "use strict";

   return Controller.extend("sap.ui.demo.walkthrough.controller.App", {

      onInit : function () {

         // set data model on view

         var oData = {

            recipient : {

               name : "World"

            }

         };

         var oModel = new JSONModel(oData);

         this.getView().setModel(oModel);

      },

      onShowHello : function () {

         MessageToast.show("Hello World");

      }

   });

});

 

我们向控制器添加一个init函数。onInit是SAPUI5的生命周期方法之一,在创建控制器时由框架调用,类似于控件的构造函数。 

 

在函数内部,我们实例化JSON模型。模型的数据只包含“收件人”的一个属性,其中还包含名称的另一个属性。

 

为了能够在XML视图中使用这个模型,我们在视图上调用setModel函数并传递我们新创建的模型。模型现在被设置在视图上。

消息toast只是显示了静态的“Hello World”消息。我们将在下一个步骤中展示如何加载翻译后的文本。

 

webapp/view/App.view.xml

<mvc:View

   controllerName="sap.ui.demo.walkthrough.controller.App"

   xmlns="sap.m"

   xmlns:mvc="sap.ui.core.mvc">

   <Button

      text="Say Hello"

      press="onShowHello"/>

   <Input

      value="{/recipient/name}"

      description="Hello {/recipient/name}"

      valueLiveUpdate="true"

      width="60%"/>

</mvc:View>

  ▪大括号{…}表示数据取自接收方的对象名称属性的值。这就是所谓的“数据绑定”。加入sap.m.Input控件。这样,用户就可以输入收件人的问候语。我们使用XML视图的声明性绑定语法将其值绑定到SAPUI5模型:

  ▪/recipient/name在模型中声明路径。

 

webapp/index.html

<!DOCTYPE html>

<html>

   <head>

      <meta http-equiv="X-UA-Compatible" content="IE=edge">

      <meta charset="utf-8">

      <title>Walkthrough</title>

      <script

         id="sap-ui-bootstrap"

         src="/resources/sap-ui-core.js"

         data-sap-ui-theme="sap_belize"

         data-sap-ui-libs="sap.m"

         data-sap-ui-compatVersion="edge"  

         data-sap-ui-preload="async"

         data-sap-ui-resourceroots='{

               "sap.ui.demo.walkthrough": "./"

        }' >

      </script>

      <script>

         sap.ui.getCore().attachInit(function () {

                       sap.ui.xmlview({

                               viewName: "sap.ui.demo.walkthrough.view.App"

                       }).placeAt("content");

         });

      </script>

   </head>

   <body class="sapUiBody" id="content">

   </body>

</html>

  请注意:可以在脚本中使用data-sap-ui- compatversion ="edge",也可以使用data-sap-ui- bindingsyntax ="complex"。通过设置“edge”兼容模式,可以自动启用复杂的绑定语法。edge模式自动启用兼容性特性,否则必须手动启用这些特性。有关更多信息,请参见兼容性版本信息Compatibility Version Information.。value属性的绑定是一个简单的绑定示例,它只包含一个绑定模式。我们还可以将文本和绑定模式组合成更复杂的绑定结果,如description属性所示。为了能够使用所谓的复杂绑定语法,我们必须通过将引导参数data-sap-ui- compatversion设置为edge全局启用它。如果省略此设置,则只允许标准绑定语法,即“Hello {/ receiver /name}”将不再工作,而“{/ receiver /name}”将正常工作。

 

Conventions

  • 变量名使用匈牙利符号。

 


Parent topic: Walkthrough

Previous: Step 6: Modules

Next: Step 8: Translatable Texts

Related Information

Model View Controller (MVC)

Data Binding

JSON Model

API Reference:sap.ui.define

posted on 2018-12-11 14:20  ricoo  阅读(648)  评论(0编辑  收藏  举报