wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)
初学wex5,先理理让人容易混淆的三个概念:
一 基本概念:
1 wex5组件,顾名思义,在编辑窗口右侧的组件集合里的,都是wex5基于开源自创的组件,并封装了一套自已的方法。目的是为了方便。相关方法在api有提示,操作中也有提示。
2 js对像
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...
此外,JavaScript 允许自定义对象。
二 对像获取与取值方法
1 wex5
this.comp() 效能较低,但操作方便
取值方法:this.comp().val()
this.comp().$domNode
取值方法为 this.comp().$domNode.innerHtml 这样可以取出一个节点元素比如div里的text值
如果想转换成DOM节点,方法为this.comp().$domNode,转换成DOM节点,为什么呢?因为有些js 方法,wex5的组件和方法都没有,我们又想操作某个元素,就必须这么操作
this.getElementByXid() 通过Xid得到组件,性能优于 this.comp()
取值方法为:this.getElementByXid().val
(注意)取值方法,一个是val(), 一个是val,带不带()不一样。
2 js对象
js对像获取与方法,网上一大堆,简单总结一下
$('*').css('background','red'); //选择本页所有元素
$(this.getElementByXid("div1")).css('background','red'); //选择Xid值为div1的元素
$('li').css('background','red'); //返回所有li元素
$('.x-col-10').css('background','red'); //返回所有class类为.x-col-10的元素
$(".x-titlebar-left").css('background','red'); //返回class为x-titlebar-left的元素
$("[src]").css('width','290px'); //返回所有带src属性的元素
$("id").hide() id选择器
这里说明一下,有些非wex5的组件没有Xid,可以手动增加id属性,用js的id选择器选择后操作
比如:color,video,audio 标签
jQuery方法*/
/*if($(this.getElementByXid("div1")).css("display")=='none'){
$(this.getElementByXid("div1")).show(); //显示div1元素
}else{
$(this.getElementByXid("div1")).hide(); //隐藏div1元素
}*/
/*if($(this.getElementByXid("image1")).css("display")=='none'){
$(this.getElementByXid("image1")).show(400); //在400毫秒内显示div1元素
}else{
$(this.getElementByXid("image1")).hide(400); //在400豪秒内隐藏div1元素
}*/
//$(this.getElementByXid("image1")).toggle(400); //上面四行的整合(以后不再提示)
/*if($(this.getElementByXid("div1")).css("display")=='none'){
$(this.getElementByXid("div1")).slideDown("slow"); //下滑显示div1
}else{
$(this.getElementByXid("div1")).slideUp("slow"); //上滑隐藏div1
}*/
//$(this.getElementByXid("div1")).slideToggle("slow");
/*if($(this.getElementByXid("div1")).css("display")=='none'){
$(this.getElementByXid("div1")).fadeIn("slow"); //淡入div1
}else{
$(this.getElementByXid("div1")).fadeOut("slow"); //淡出div1
}*/
//$(this.getElementByXid("div1")).fadeToggle("slow");
//$(this.getElementByXid("image1")).animate({height:'50px',width:"50px"}); //将image1的高度和宽度都动画变成50px
//$(this.getElementByXid("image1")).animate({height:'+=50px',width:"+=50px"}); //将image1的高度和宽度都动画增加50px
//$(this.getElementByXid("row2")).remove(); //删除row2及其子元素
//$(this.getElementByXid("row2")).empty(); //删除row2子元素,保留frow2
/*if($(this.getElementByXid("row2")).hasClass("blue")){
$(this.getElementByXid("row2")).removeClass('blue') ; //给row2添加blue类
}else{
$(this.getElementByXid("row2")).addClass('blue') ; //给row2去除blue类
}*/
//$(this.getElementByXid("row2")).toggleClass('blue') ;
过滤选择器*/
//$("img[src$='jpg']").css('width','290px'); //返回所有属性src以jpg结尾的image元素
//$("img[src*='head.jpg']").css('width','290px'); //返回属性src包含head.jpg的img元素
//$('lidd').css('background','red'); //返回偶数行的li元素
//$('li:even').css('background','red'); //返回奇数行的li元素
//$('li:first').css('background','red'); //返回第一个li元素
//$('li:last').css('background','red'); //返回最后一个li元素
//$('li:eq(2)').css('background','red'); //返回第二个li元素
//$('li:gt(2)').css('background','red'); //返回第二个以后的li元素
//$('li:lt(2)').css('background','red'); //返回第二个以前的li元素
//$("li:not(:empty)").css('background','red'); //返回不为空的li元素
//$("div:empty").css('background','red'); //返回空的div元素
//$("li div:contains('冀')").css('background','red'); //在li元素下面选择文本包含冀的div元素
//$("li div:has(input)").css('background','red'); //在li元素下面,选择有子元素input的div元素
//$("li:visible").css('background','red'); //选择可见的li元素
//$("ul li:nth-child(3n + 1)").css('background','red'); //选择3n+1(n=1,2,3.。。。)的li元素
这么多方法,其实在开发中多多少少要用到,大家还是要多看一点。只用wex5的东西,有时也有限。这里只做一些说明。
三 组件关系:
js历史悠久, wex5组件基于各种框架而成,是明显的父子关系。
即:
wex5的组件方法中,可以执行js的方法,而在js的方法中,无法执行wex5的方法。
举个例子:
在wex5的事件更新中,直接写js的方法,很好。返过来,在js中写this.comp()什么的,认不了。想想也是啊,父亲是认不了儿子的行为的。儿子不仅认识父亲的方法,还自建一套。
四 执行顺序
js的执行速度最快,会在页面完成后执行。
而wex5的组件,需要modeLoad,初始化完成后才能执行。即使是modelParamsRecive也不能优于js
那问题来了,我如果页在中同时用了js与wex5,如何控制执行顺序呢?
如果把js代码放到页面中,它会先于其它执行,方法是把js方法装到wex5的组件方法中去,进行一次方法套用。
还是这个例子。如果把
$(".true").show();
$(".wrong").hide(); 放到页面之外,直接执行,执行是 执行了,值的改变就会成了马后炮。
在混合开发中,会遇到很多组件与方法共生共用的情况,大家要区别对待,不能盲写盲从,如果提示方法未定义,组件不存在,看看是不是把js和wex5的东西 用混用错了。
wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)的更多相关文章
- vue父子组件生命周期执行顺序
之前写了vue的生命周期,本以为明白了vue实例在创建到显示在页面上以及销毁等一系列过程,以及各个生命周期的特点.然而今天被问到父子组件生命周期执行顺序的时候一头雾水,根本不知道怎么回事.然后写了一段 ...
- JS的预编译和执行顺序 详析
原文:JS的预编译和执行顺序 详析 最近在复习javascript的事件处理时发现了一个问题,然后也是我来写javascript的预编译和执行顺序的问题 代码: 复制代码 代码一 <ht ...
- js 关于setTimeout和Promise执行顺序问题
js 关于setTimeout和Promise执行顺序问题 异步 -- Promise和setTimeout 执行顺序 Promise 和 setTimeout 到底谁先执行 定时器的介绍 Jav ...
- JS的预编译和执行顺序 详析(及全局与局部变量)
最近在复习javascript的事件处理时发现了一个问题,于是总结一下:javascript的预编译和执行顺序的问题: <html> <head> <title> ...
- js函数和变量的执行顺序【易错】
js函数和变量的声明与执行顺序 一.函数执行顺序 1.正常顺序 function f(){ alert(2); } f(); //alert 2 所有浏览器都能测试通过. 2.倒序调用 f(); // ...
- 谁先执行?props还是data或是其他? vue组件初始化的执行顺序详解
初入vue的朋友可能会疑惑,组件初始化的时候,created,props,data到底谁先执行? 今天,我就带大家从源码的角度看看到底谁先执行? 我们知道,vue是个实例 那我们就从new Vue() ...
- Vue相关,vue父子组件生命周期执行顺序。
一.实例代码 父组件: <template> <div id="parent"> <child></child> </div& ...
- vue中父子组件钩子的执行顺序
我们已经非常熟悉单个的vue组件的生命周期执行顺序了,但是,如果有嵌套组件,父子组件的生命周期的执行顺序是什么? 当父子组件在加载的时候,执行的先后顺序为 父beforeCreate -> 父c ...
- Vue父子组件生命周期执行顺序及钩子函数的个人理解
先附一张官网上的vue实例的生命周期图,每个Vue实例在被创建的时候都需要经过一系列的初始化过程,例如需要设置数据监听,编译模板,将实例挂载到DOM并在数据变化时更新DOM等.同时在这个过程中也会运行 ...
随机推荐
- finnal 评论 II
新蜂团队:俄罗斯方块界面设计给人眼前一亮的感觉,很喜欢他们界面的颜色搭配.功能上实现了俄罗斯方块的基本功能,并且没有bug.最重要的是游戏有自己的创新点在里面,很喜欢游戏的瞄准功能.总的来说项目完成的 ...
- 一道无限级分类题的 PHP 实现
今天有网友出了道题: 给出如下的父子结构(你可以用你所用语言的类似结构来描述,第一列是父,第二列是子),将其梳理成类似如图的层次父子结构. origin = [('A112', 'A1122'), ( ...
- .net core 1.0 中的asp.net identity 的基本使用 序言
2016年6月底,微软发不了vs2015 up3,在这个版本中,微软做了一些改变,本人目前也尚在学习使用之中,现把学习和使用的心得写出来,错误之处请大家指正. 开发环境:vs2015 UP3 项目 ...
- 【java基础学习】反射
1. 什么是反射 Class.Method.Field.Constructor,它们是反射对象.它们是类.方法.成员变量.构造器,在内存中的形式. 也就是万物皆对象!类是类型.方法是类型.成员变量是类 ...
- EntityFramework 性能优化
1. 查询时如果不缓存数据,可以加快加载速度 //连接数据库 TestDbContext db = new TestDbContext(); //使用 AsNoTracking() 方法后将不会在 D ...
- solr5.2 mysql 增量索引
前提:数据库里数据进行增删改操作时,相应的solr需要修改或者新建索引,之前从数据库中导入数据并创建索引的操作是全量创建,如果本身数据库数据量非常大,就需要增量创建索引 1./usr/local/sr ...
- AVAudioPlayer播放本地音频
AVAudioPlayer苹果官方上说一般用于播放本地音频,不能用于播放网络上的音频. 具体的代码:先导入 #import <AVFoundation/AVFoundation.h> // ...
- Chrome 中的 JavaScript 断点设置和调试技巧
Console:此功能是模拟js控制台,直接写代码,查看结果.高级功能使用时开启断点,查看变量的变化过程.还可以条用函数. Resources:次功能是查看加载页面所用的资源,链接的数据库,域名下保存 ...
- 关于Java中基本类型的长度相关基础知识
1. 用HeapByteBuffer放int占几个byte? 占4个.而且不论你是放1还是-1还是0xffff. 因为int的长度是4个byte,HeapByteBuffer的存储又是byte数组. ...
- KEEPALIVED 双机自动切换部署备忘
1.配置文件的名字不要型错了.开始我将配置文件写成keeplive.conf,运行后也不报错,但无法看到VIP.日志里也看不到任何有价值信息.直到后来反复检查才发现可能配置文件名有问题,修正为keep ...