起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2222|回复: 3

[结贴] 动态创建的组件、再次根据xid获取js对象结果为null

[复制链接]

29

主题

120

帖子

483

积分

中级会员

Rank: 3Rank: 3

积分
483
QQ
发表于 2017-8-7 14:12:55 | 显示全部楼层 |阅读模式
我使用
  1.         var newContent=$(this.getElementByXid("content1")).add({});
  2.                                  var targetElement = this.getElementByXid('row2');  
  3.                                 var flag = {
  4.                                                 xid : "controlGroup2",
  5.                                         'class' : "x-control-group mycontrol",
  6.                                         style:"font-size:12px;"
  7.                                  };
  8.                                 var cg = new controlGroup(flag);
  9.                               
  10.                                 cg.set({"title" : '报销明细('+this.i+")","collapsible" : true,"display":'block'});
  11.                                 
  12.                                  justep.Component.addComponent(newContent, cg,targetElement);
复制代码

这种方式动态的创建了一个controlGroup组件,也为该组件指定了xid,在调试模式下也能清楚的找到该组件,但不借的是,当我再次通过xid去获取该组件时,结果却为null。

当使用下表面这种方式却可以通过xid再次获取组件js对象
  1. var parentDiv = this.getElementByXid("content1");
  2.                                 var flag = {
  3.                                                 xid : "controlGroup2",
  4.                                        parentNode : parentDiv,
  5.                                         'class' : "x-control-group mycontrol",
  6.                                         style:"font-size:12px;"
  7.                                  };
复制代码
如果我想使用 justep.Component.addComponent(newContent, cg,targetElement);创建组件,该怎样做才能获取到新创建的组件对象了?


调试中contorlGroup已经创建

调试中contorlGroup已经创建

根据xid再次获取结果为null

根据xid再次获取结果为null
发表于 2017-8-7 15:35:55 | 显示全部楼层
本地测试button 是没问题的!可以根据xid获取
  1.         Model.prototype.button7Click = function(event){
  2.                  var newContent = this.comp('pages').add({});
  3.                  
  4.                    this.button = new Button({
  5.                        label : '新按钮',
  6.                        xid:'test'
  7.                    });               
  8.                    this.button.on('onClick', function(event) {
  9.                        alert('单击事件');
  10.                    }, this);
  11.                    justep.Component.addComponent(newContent.domNode, this.button);
  12.         };
复制代码
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

发表于 2017-8-7 15:40:13 | 显示全部楼层
类似的做法  也是可以的!!
应该是你 newContent  获取的dom节点不正确吧!

  1.         Model.prototype.button7Click = function(event){
  2.                  var newContent = this.comp('pages').add({});
  3.                  
  4.                   var flag = {
  5.                                                 xid : "controlGroup2",
  6.                                         'class' : "x-control-group mycontrol",
  7.                                         style:"font-size:12px;"
  8.                                  };
  9.                                 var cg = new controlGroup(flag);
  10.                               
  11.                                 cg.set({"title" : '报销明细('+this.i+")","collapsible" : true,"display":'block'});
  12.                    justep.Component.addComponent(newContent.domNode, cg);
  13.         };
复制代码



我觉得是下面这个代码有问题!获取的不是标准的dom节点!而是jquery 对象!
  1. $(this.getElementByXid("content1")).add({})
复制代码
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

29

主题

120

帖子

483

积分

中级会员

Rank: 3Rank: 3

积分
483
QQ
 楼主| 发表于 2017-8-10 14:45:49 | 显示全部楼层
liangyongfei 发表于 2017-8-7 15:40
类似的做法  也是可以的!!
应该是你 newContent  获取的dom节点不正确吧!

的确,是组件使用错误,我使用的是content作为父节点来进行节点新增,换成contents就好了,谢谢解答,请结贴。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-7-9 03:00 , Processed in 1.331169 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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