设为首页 收藏本站
查看: 1020|回复: 0

[经验分享] SAP UI5

[复制链接]

尚未签到

发表于 2015-9-19 03:15:34 | 显示全部楼层 |阅读模式
  上次尝试了UI5的View和controller,今天准备学习下UI5的数据绑定。
  先尝试Json模式
  首先在Controller.js中定义一个json数据源,并且绑定到数据Model上
  代码如下:



1     onInit: function() {
2         var oModel = new sap.ui.model.json.JSONModel();
3         var data = {
4                 firstName: "John",
5                 lastName: "Doe",
6                 birthday: {day:01,month:05,year:1982},
7                 address:[{city:"Heidelberg"}],
8                 enabled: true
9             };
10         oModel.setData(data);
11         sap.ui.getCore().setModel(oModel);
12     },
  运行时内存中应该就会有这个数据模型了,下一步是在View中使用这些数据
  首先为了美观,这次的View中添加了一个Form,form中有若干field,包含结构如下:
  先简写如下:
  sap.ui.layout.form.Form->Form
  sap.ui.layout.form.FormContainer->FormContainer
  sap.ui.layout.form.FormElement->FormElement
  sap.ui.commons.TextField->TextField
  Form

  FormContainer1

  FormElement1
  TextField1
  TextField2
  TextField3  
  FormElement2   '
  ....  
  FormContainer2
  .......
  现在Form构建好了,View.js中createContent方法的代码如下:



1     createContent : function(oController) {
2         
3         var oTextField1 = new sap.ui.commons.TextField("T1",
4                 {
5                 value: "{/firstName}"
6                 });
7         var oTextField2 = new sap.ui.commons.TextField("T2",
8                 {
9                 value: "{/lastName}"
10                 });
11         var oTextField3 = new sap.ui.commons.TextField("T3",
12                 {
13                 value: "{/birthday/year}"
14                 });
15         var oTextField4 = new sap.ui.commons.TextField("T4",
16                 {
17                 value: "{/address}"
18                 });
19         
20         var oFormContainer = new sap.ui.layout.form.FormContainer("F1C1",
21                 {
22                 title: "Personnel data",
23                 formElements: [
24                                new sap.ui.layout.form.FormElement(
25                                     {
26                                     label: new sap.ui.commons.Label(
27                                            {text:"Name",   
28                                            }),
29                                     fields: [oTextField1,
30                                              oTextField2,
31                                              oTextField3,
32                                              oTextField4,]      
33                                        })],
34                 });
35                 
36     var oLayout = new sap.ui.layout.form.GridLayout();
37     
38     var oForm = new sap.ui.layout.form.Form("F1",
39             {
40             title: "FORM",
41             layout: oLayout,
42             formContainers:[
43                             oFormContainer
44                             ]
45         
46             });   
47     return oForm;
48     }
  在定义TextField时,通过两种方法可以绑定数据
  第一种就是代码中的 value: "{/firstName}" 这样的,绑定的数据就是Json数据源中的firstName对应的值
  第二种方法是通过oTextField.bindProprety('value','/firstName') 效果是一样的。
  如果Json数据有多层格式,就按照/birthday/year的方式访问,相当于Jsondata[birthday][year].
  
  
  如果Json数据是一个数组,有多条记录,并且想要绑定到一个Table中,可以采用如下方式:
  View中Table的构建如下:
  Table:
  Column1
  TextField:
  value: "{/firstName}"
  Column2
  value: "{/lastName}"
  然后在绑定Model的时候



var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(tableData);
oTable.setModel(oModel);
oTable.bindRows("/");
  这样每一条记录都会被绑定到Table对应的一行,并且按照TextField绑定的column名字匹配
  
  附上完整的Table绑定Json数据的代码:
  这边我把数据源一并写在了View.js中



1 sap.ui.jsview("ui5_view.MyView", {
2
3     getControllerName : function() {
4         return "ui5_view.MyView";
5     },
6
7     createContent : function(oController) {
8         var oColumn1 = new sap.ui.table.Column('C1',
9             {
10             label:
11                 new sap.ui.commons.Label({
12                     text: "FirstName"
13                 }),
14             template:
15                 new sap.ui.commons.TextField().bindProperty("value","firstName"),               
16             });
17         
18         var oColumn2 = new sap.ui.table.Column('C2',
19             {
20             label: "LastName",
21             template:
22                 new sap.ui.commons.TextField().bindProperty("value","lastName"),                                    
23                 });        
24         
25         var oTable = new sap.ui.table.Table('TB1',
26                 {            
27                 });
28         oTable.addColumn(oColumn1);
29         oTable.addColumn(oColumn2);
30         var oModel = new sap.ui.model.json.JSONModel();
31         var data = [
32                 {
33                 firstName: "John",
34                 lastName: "Doe",
35                 },
36                 
37                 {
38                 firstName: "Tom",
39                 lastName: "Jerry",   
40                 }];
41         
42         oModel.setData(data);
43         oTable.setModel(oModel);
44         oTable.bindRows("/");
45         return oTable;
46     }   
47     }
48     );
  效果如下:
DSC0000.png
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115533-1-1.html 上篇帖子: What 's CATT(Computer Aided Test Tool)?How to deal with the CATT in the SAP Syst 下篇帖子: SAP Best Practices 简要介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表