Mryqu's Notes


  • 首页

  • 搜索
close

[OpenUI5] 自定义控件属性支持的数据类型

时间: 2015-08-08   |   分类: FrontEnd     |   阅读: 252 字 ~2分钟

创建一个OpenUI5控件时免不了声明几个属性,例如:

metadata: {
  properties: {
    "msg" : {type : "string", defaultValue : "kx123"},
    "byProxy" : {type : "boolean", defaultValue : true}
  },
  publicMethods: [
  ],
  events: {
    complete : {enablePreventDefault : true}
  }
}

可是属性都支持那些数据类型呢?搜了一下OpenUI5 开发指南,并没有找到什么有用的信息。还是得从代码里面寻觅,结果发现答案就在sap.ui.base.DataType里。

var mTypes = {
 "any" :
  createType("any", {
   defaultValue : null,
   isValid : function(vValue) {
    return true;
   }
  }),
 "boolean" :
  createType("boolean", {
   defaultValue : false,
   isValid : function(vValue) {
    return typeof vValue === "boolean";
   }
  }),
 "int" :
  createType("int", {
   defaultValue : 0,
   isValid : function(vValue) {
    return typeof vValue === "number" && Math.floor(vValue) == vValue;
   }
  }),
 "float" :
  createType("float", {
   defaultValue : 0.0,
   isValid : function(vValue) {
    return typeof vValue === "number";
   }
  }),
 "string" :
  createType("string", {
   defaultValue : "",
   isValid : function(vValue) {
    return typeof vValue === "string" || vValue instanceof String;
   }
  }),
 "object" :
  createType("object", {
   defaultValue : null,
   isValid : function(vValue) {
    return typeof vValue === "object" || typeof vValue === "function";
   }
  })
};

DataType.getType = function(sTypeName) {
 var oType = mTypes[sTypeName];
 if ( !oType ) {
  // check for array types
  if (sTypeName.indexOf("[]") > 0) {
   var sComponentTypeName = sTypeName.slice(0, -2),
    oComponentType = this.getType(sComponentTypeName);
   oType = oComponentType && createArrayType(oComponentType);
   if ( oType ) {
    mTypes[sTypeName] = oType;
   }
   return oType;
  } else {
   oType = jQuery.sap.getObject(sTypeName);
   if ( oType instanceof DataType ) {
    mTypes[sTypeName] = oType;
   } else if ( jQuery.isPlainObject(oType) ) {
    oType = mTypes[sTypeName] = createEnumType(sTypeName, oType);
   }
  }
 }
 return oType;
};

有上面代码可知,首先支持的基本数据类型有any、boolean、int、float、string和object。

支持数组,但是数组项的类型必须是支持的基本数据类型。例如"messages" : {type : “string[]",defaultValue : “mryqu,kx123”}。其中类型以[]结尾,值用逗号分隔。

此外支持可枚举的属性,即扁平对象(使用”{}“或"new Object"创建而得) [OpenUI5] 自定义控件属性支持的数据类型 对sap.ui.base.DataType的值解析、属性有效性验证等细节除了研究代码外,还可参考单元测试DataType.qunit.html。

标题:[OpenUI5] 自定义控件属性支持的数据类型
作者:mryqu
声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

#openui5# #control# #perperty# #data# #type#
[Hive] Hive UDF not supported in insert/values command
[JavaScript] 判断jQuery版本
  • 文章目录
  • 站点概览

Programmer & Architect

662 日志
27 分类
1472 标签
GitHub Twitter FB Page
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%