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

QQ登录

只需一步,快速开始

查看: 2672|回复: 8

[处理中1] 动态创建组件报错

[复制链接]

4

主题

15

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
发表于 2016-10-20 23:43:41 | 显示全部楼层 |阅读模式
采用动态创建组件的方法,想在页面创建一个video的组件
代码如下
var video = $("<video src=\"http://doc.wex5.com/wp-content/uploads/2016/04/2.mp4\"/>");
var newContent = this.comp("contents2").add({});
justep.Bind.addNodes(newContent.domNode, video);
结果再add的地方报错,说Cannot read property 'add' of null
页面已经存在一个叫contents2的contents组件了。

然后觉得这个地方add其实就是相当于新建 一个content,对代码进行了如下修改
                var video = $("<video src=\"http://doc.wex5.com/wp-content/uploads/2016/04/2.mp4\"/>");
//                var newContent = this.comp("contents2").add();
                justep.Bind.addNodes(this.getElementByXid("content1").domNode, video);
页面存在一个content1的content组件,但是这个修改完成后 ,报 Cannot read property 'domNode' of null

然后觉得通过byxid已经拿到这个地方了,就把代码改成了如下
                var video = $("<video src=\"http://doc.wex5.com/wp-content/uploads/2016/04/2.mp4\"/>");
//                var newContent = this.comp("contents2").add();
                justep.Bind.addNodes(this.getElementByXid("content1"), video);
结果报错“添加子节点时,父节点不允许为空”

H5新手不会写语句,采用提供的这个也时各种出错,请各位看下,我应该如何修改才能增加一个视频控件再页面上

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-10-21 13:58:27 | 显示全部楼层
进过几次修改,感觉,你是使用这个中方式动弹添加的话,还是用JQuery 中的方法。你在前面直接把他定义成一个字符串 然后用 $(this.getElementByXid("content1")).html(video) 直接这样进去,是不是更简单些
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

4

主题

15

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2016-10-21 15:48:09 | 显示全部楼层
闰土 发表于 2016-10-21 13:58
进过几次修改,感觉,你是使用这个中方式动弹添加的话,还是用JQuery 中的方法。你在前面直接把他定义成一 ...

额  因为新手不太会JQuery的方法,您这个$语句我应该添加在什么地方呢
回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-10-21 15:49:54 | 显示全部楼层

  1. var video = "<video src="http://doc.wex5.com/wp-content/uploads/2016/04/2.mp4"/>";
  2. $(this.getElementByXid("content1")).html(video)  //就是把video 直接放到content1 中
复制代码

在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

4

主题

15

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2016-10-21 15:50:47 | 显示全部楼层

好的 我今天测试一下,谢谢
回复 支持 反对

使用道具 举报

4

主题

15

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2016-10-21 21:21:33 | 显示全部楼层

        var Model = function(){
                this.callParent();
                var video = "<video src=\"http://doc.wex5.com/wp-content/uploads/2016/04/2.mp4\"/>";
                $(this.getElementByXid("content1")).html(video);
               
        };

我想进入页面就加载,按照这个写了以后,并没有在页面展示出来,还是有什么地方写得不对么
回复 支持 反对

使用道具 举报

发表于 2016-10-22 11:10:57 | 显示全部楼层
参考 : http://doc.wex5.com/comp-base/#2.2
正确的写法应该是
     var video = $("<video src=\"http://doc.wex5.com/wp-content/uploads/2016/04/2.mp4\"/>");
//                var newContent = this.comp("contents2").add();
                justep.Bind.addNodes(newContent.domNode, video);
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

4

主题

15

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2016-10-22 15:41:54 | 显示全部楼层
liangyongfei 发表于 2016-10-22 11:10
参考 : http://doc.wex5.com/comp-base/#2.2
正确的写法应该是
     var video = $("");

    var newContent = this.comp('contents1').add({});

    var div = $("
<div data-bind='click:divClick'>新的页面</div>

");
    justep.Bind.addNodes(newContent.domNode, div);
   
    //div的click事件调用的divClick方法
    Model.prototype.divClick = function(){
        alert('单击事件');
    };

在您提供的这个页面里面,newContent这个组件的时候add里面有大括号啊
回复 支持 反对

使用道具 举报

4

主题

15

帖子

37

积分

新手上路

Rank: 1

积分
37
QQ
 楼主| 发表于 2016-10-22 16:02:47 | 显示全部楼层
liangyongfei 发表于 2016-10-22 11:10
参考 : http://doc.wex5.com/comp-base/#2.2
正确的写法应该是
     var video = $("");

按照这个写法的话,执行的时候报错
unable to get property 'add' of undefined or null reference
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-20 11:38 , Processed in 0.053852 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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