关于3-7中组件onLoad和onLeave添加和删除类的问题

来源:

凝雪幽樱

2016-05-10

不知道是我理解问题,还是Lyn老师没注意。

在没有执行onLoad或者onLeave时,new出来的那个元素的class应该是h5_component,h5_component_name_myName, 

h5_component_base这三个。

当执行

component.on('onLoad', function(){

    component.addClass(cls + '_load').removeclass(cls + '_leave');

    return false;
});

的时候,会把h5_component_name_myName这个类给删掉。

所以我个人觉得是不是应该如下才对

component.on('onLoad', function(){

  component.addClass(cls + '_load').removeClass('h5_component_' + cfg.type + '_leave');

  return false;
});

onLeave同理

写回答

5回答

Lyn

2016-05-12

统一回复下大家:

H5ComponentBase是应该传入一个 name 参数的,并且会体现在样式中,如,当我传入「myName」作为组件的名称的时候。

//szimg.mukewang.com/5733ebfe00017a1b10770693.jpg

那么在生成的代码里面,浏览器里面应该看到,即使有  h5_component_baseh5_component_base_load 也应该有 h5_component_name_myName

//szimg.mukewang.com/5733ec2e00017a0f10760844.jpg

但是代码中有个错误,cls 的定义不太正确(继承 3-5 的内容,当时还没有考虑 onload 、onleave)

//szimg.mukewang.com/5733ec950001f9f514460712.jpg

所以,当代码执行到真正的 onLeave、 onLoad 的时候:

5733ecc100019d6905000281.jpg

因为 addClass、removeClass 可以传入多个样式类名(用空格分割),所以当执行 removeClass(cls_'_leave') 的时候,实际上执行的是 

removeClass('h5_component_'+cfg.type+' h5_component_name_'+name) 这里 h5_component_name_myName 被删除了,这是一个BUG!!

结果如下图,浏览器。没有 myName 相关的样式了。

5733ecc100018ab905000313.jpg

----

在这个章节,应该把这个讲清楚,非常感谢 @凝雪幽樱 @isjia 提出的问题,我会尽快修复这个BUG,有任何问题也可以直接私信给我。

1
1
凝雪幽樱
非常感谢!
2016-05-16
共1条回复

Lyn

2016-05-11

你的代码是正确的。


实际上 cls 的定义就是 'h5_component_' + cfg.type

H5ComponentBase.js : 7

    // 把当前的组建类型添加到样式中进行标记
    var cls = ' h5_component_'+cfg.type;


0
2
凝雪幽樱
我看到后面章节中改掉这个问题了,那没事了
2016-05-11
共2条回复

Helianthuserin

2016-06-05

类名命名的时候最好简化点。。//szimg.mukewang.com/575393cc0001adee05700093.jpg 

这么多很长很像的类看的头要炸了。。

2
0

isjia

2016-05-11


老师的代码误导大家,尽然还多此一举地把'h5_component_name_'+ name 移动到前面,建议视频里面纠正一下
1
2
Sappho
请问为什么移动到前面就可以避免删除'h5_component_name_'+ name了?
2016-12-26
共2条回复

weibo_哆啦A梦有大口袋_0

2017-06-07

 // 把当前的组建类型添加到样式中进行标记
    var cls = ' h5_component_'+cfg.type;
//如果cls改成上面的话,那么component也要进行更改才行,不然传进来的参数name就没有用了
var component=$('<div class="h5_component h5_component_name_'+name+cls+'" id="'+id+'"></div')
0
0

Web App用组件方式开发全站

用HTML5/CSS3/JS流行技术,实现移动端可视化数据报告

3164 学习 · 516 问题

查看课程