自定义控件呈现两次
Custom control rendering twice
我正在使用自定义控件扩展sap.ui.unified.Calendar,覆盖renderDays()函数,以在每个天div中放置一个额外的span标签。
控制台指示小时数组未定义。它会抛出下面发现的错误,但之后继续工作。此错误会阻止使用标题箭头在日历中的月份之间移动。这是两次渲染吗?为什么 hours[] 一开始未定义,但之后没问题?
如果我将所有代码放入单个文件 JSBin,它不会出错。JSBin
自定义控件的代码顶部:
sap.ui.unified.Calendar.extend("control.TimeCalendar", {
metadata : {
properties : {
"hoursData" : "string[]"
}
},
renderer: {
renderDays: function(oRm, oCal, oDate){
var hours = oCal.getHoursData();
控制台输出:
Cannot read property 'length' of undefined
摘自自定义控件 TimeCalender.js。这是在里面做...while 循环,将每一天放在日历上。在函数放置日期的地方,我还包含一个 span 标签,其中包含从数组 'hours' 中检索到的数字。
oRm.write("<span class='"sapUiCalDayNum'">");
if ( (hours.length>i) && (hours[i].day == oDay.getUTCDate()) ) {
oRm.write("<span class='"hours'">");
oRm.write(hours[i].hours);
oRm.write("</span>");
if(i <= hours.length) { i++; }
}
oRm.write(oDay.getUTCDate());
oRm.write("</span>");
猜测一下,我会说在您的非 jsbin 场景中,您正在使用数据绑定,并且数据要么从后端异步接收,要么在第一次渲染后设置?
在这种情况下,小时数据值设置为未定义,这会导致错误。
如果按如下方式定义属性:
properties : {
"hoursData" : { type: "string[]", defaultValue: [] }
}
。这样,您可以确保始终存在一个具有 length 属性的数组。
相关文章:
- 在angularjs中创建自定义控件的推荐方法
- 自定义控件中的双向绑定在SAPUI5中不起作用
- 如何使用ngModel将自定义控件的提供程序扩展器分离到Angular 2中的单独文件中
- Google Maps Javascript v3 自定义控件子类化标准控件
- 优化自定义控件的脚本
- 从谷歌地图自定义控件打开离子模态时遇到问题
- ASP.net自定义控件,下拉值必须在服务器端填充,所选值在返回时丢失
- UpdatePanel中自定义控件内的动态javascript
- 操作无法使用自定义控件上的呈现属性集,该控件包含操作按钮
- Lightswitch HTML 自定义控件仅显示一次
- 自定义控件呈现两次
- asp.net ajaxtoolkit 自定义控件扩展器
- 传单:如何在自定义控件中设置 panTo 方法
- 尝试锁定自定义控件,但在页面中有多个控件时出现问题
- 使用自定义控件构建开放层
- 传单:使用分组图层控件插件扩展自定义控件
- 网格视图自定义控件和 JavaScript 函数 c#
- 要在不同 VS 解决方案中的多个应用中使用的自定义控件
- 如何在我的 aspx 上使用条件更新面板调用自定义控件 javascript
- ASP.NET 自定义控件,两个网格.需要一些建议