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

QQ登录

只需一步,快速开始

查看: 5364|回复: 13

[分享] 貌似没有关于Model属性的函数的整理帖子

  [复制链接]

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
发表于 2016-11-21 10:04:01 | 显示全部楼层 |阅读模式
  既然没有前人,那么就由小弟来整理一下  学习中和各位一起分享一下   希望各位大大指点迷津 有不对之处 请不要保留的提供正确的姿势让小弟我顶头膜拜  

评分

参与人数 1威望 +50 收起 理由
半导体 + 50 赞一个!

查看全部评分

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
 楼主| 发表于 2016-11-21 10:49:44 | 显示全部楼层
001.png   从第一个开始讲起
Model.prototype.addComponent(parentElement, component, targetElement)

参数
parentElement  
    从wex5提供的api来看(其实很明显,大部分这种添加的函数都是需要一个父级docm来确定一下位置的) 大概就是你需要添加的位置的父级docm对象,这里我提供的是jq对象, 据我测试,网页的原生document对象也是可以通过的

component
    组件实例   从介绍来看就是wex5提供的一个组件对象实,根绝我的实验,这个需要用户自己调用wex5提供的组件对象来new一个新的对象使用  请看我后面的实例测试截图

targetElement
    插入位置,  这个我就真不清楚,查询了wex5的api还有百度找了一会,实在是没有办法确认这个参数到底是干嘛的,虽然他的大概目的我明白,但是,究竟是如何使用我实在是没时间慢慢测试了,希望有大神能帮忙指出



测试截图
    002.png
很明显,我先再上面引用了一下wex5的组件对象,然后再往后定义才会成功执行   


总结
   这个函数应该是使用在动态添加组件之类的需求上,总的来说,用处还是蛮大的,对于一些管理后台的项目来说,应该经常会用到。
回复 支持 反对

使用道具 举报

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
 楼主| 发表于 2016-11-21 11:08:41 | 显示全部楼层
根据上面的 稍微补充一下  

Model.prototype.addNode(parentElement, element, targetElement);
Model.prototype.addNodes(parentElement, list, targetElement)

这两个对象其实和上面提到过的添加组件非常相识,  都是属于添加,不同的是他们添加的是element对象,下面的参数重的list其实就是一个数组里面存放着element*   获得element的对象  用jq查询器或者是document,get的方法都能得到,总的来说 因为和上面的函数实在太相识了,所以我就稍微提一下,

不能理解的话,  请顺着网线爬过来揍我。

实例图
QQ截图20161121110706.png


*
(也许有人不太清楚element对象是什么意思,其实说起来JS的对象概念都很模糊,也许是我很菜,各有各的理解,1000个人学闭包就能有500中不同的闭包理解,我对element的看法就是 单纯的把他理解成一种能被html解析的document翻译的对象,再说简单点,就特么是标签。我这个是面向初学者的,为了能更好地理解我就这么解释了。)
回复 支持 反对

使用道具 举报

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
 楼主| 发表于 2016-11-21 17:12:09 | 显示全部楼层
本帖最后由 LwzWex5 于 2016-11-21 17:13 编辑

Model.prototype.call(caller, fn);

看到Call 我第一个反应就是继承。

这里的call很明显是再次封装过的 并非是原装的call对象  先来看看这个函数体到底描述了什么吧

在console中打开这个函数

function(e,t){return 1==arguments.length&&(t=e,e=this),function(){return t.apply(e)}}

中这段代码就能很清晰的看出来,call函数所有表达的用途。

这里的两个参数分别代表对象e 和对象t

注意必须是Function这种可继承对象,{}不行。 不然没有apply属性会报错

根据这段代码的意思, call的作用就是将第二个参数被第一个参数的对象继承*,

实例截图
QQ截图20161121170605.png

这里会输出1    继承后的属性函数中this的指向也会变化。 这里就不多提继承了,有兴趣的可以去网上找找  call 和 apply 的用法  
回复 支持 反对

使用道具 举报

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
 楼主| 发表于 2016-11-21 17:16:35 | 显示全部楼层
Model.prototype.close();

对于这个方法,请原谅我不想多做解释。

关闭页面,虽然在wex5的结构中 关闭页面其实并不是传统意义上的关闭 而是一种类似于在主页面中关闭ifream一样的感觉  当然 你要是在主页面中执行这个函数, 那就是刷新了。  嗯  我建议你最好不要这样做。
回复 支持 反对

使用道具 举报

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
 楼主| 发表于 2016-11-21 18:04:16 | 显示全部楼层
Model.prototype.comp(xidOrNode);
Model.prototype.componentPromise(xidOrNode);
Model.prototype.comps(xid);

关于这3个函数  我心中很想吐槽一下。
喂喂喂  说好的xid不是唯一的么。。  为什么还能有comps这种通过xid能查询返回数组的函数。

componentPromise函数和其他的外表看起来很大的不同,其实,介绍上说  这是一个可以 “异步获取组件”的方法。 恩 异步。好吧,根据我那些浅显的js基础,对于ajax异步很容易就能联想到,但是。很遗憾我没能测试出它的使用方法,它在我手上的作用几乎等同于comp。嘛比较平时比较少用到,这里只是提一下  没办法,相关的api实在太少了,这种方法看来平时根本没人会用呀。

说道重点了。

一般来说 comp和之前提到的2个完全不一样,用到的地方太多了,几乎每个项目都会有使用到它的地方。

简单来说,如果用过$选择器的一定就会明白, comp就是wex5的空间选择器,只不过你需要提供你想要查找控件的xid,返回值也是控件对象。

使用实例代码
this.comp("model")

这样就能得到model的控件对象。。

注意,这里返回的对象是控件对象。





回复 支持 反对

使用道具 举报

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
 楼主| 发表于 2016-11-21 18:46:50 | 显示全部楼层
本帖最后由 LwzWex5 于 2016-11-21 19:07 编辑

Model.prototype.getContext()
Model.prototype.getRootNode()
Model.prototype.getContextID()
Model.prototype.getIDByXID(xid)


getContext方法的官方解释是 “获取上下文” ,喂喂喂,是不是太简单了一点,然后只能我自己动手去测试了,测试结果,主页面子页面都会返回当前model对象所在的页面的widow控件中,这里有人会问,widows控件,我没有放呀?麻烦你看一下你项目结构最外层,所有的控件都是用一个widow包裹住的。
我们来看一下他的源代码
function(){return this.__context}
但是请注意  __context属性实际上却是一个Object对象。
里面包含了对象:data,model  


getRootNode这个方法和上面提到的getContext很相似,不同的是,他会返回一个element的对象。当然也是window控件。

getContextID方法,很简单,就是获取当前页面的唯一id,因为wex5的id都是自动生成的,所以我们无法自己去设置id,但是,可以用这个方法来获取id编码,
但是值得注意的是,这里获得的id编码却不是真正的docm的id,真正的docm的id是 getContextID()+xid 组合而成的。  

getIDByXID(xid) ,没有人会傻傻的用getContextID()+xid来获取到控件id吧,毕竟  明明有getIDByXID存在了,只需要传入一个xid的参数就能返回给你这个xid控件生成好的id


也许我表达的不够好  但是  实在不行  不是有留言么。。





回复 支持 反对

使用道具 举报

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
 楼主| 发表于 2016-11-22 09:14:14 | 显示全部楼层
本帖最后由 LwzWex5 于 2016-11-23 15:58 编辑

Model.prototype.params   

刚开始做wex5的时候经常用到的,根据我使用的经验还有命名来看,里面存储的都是参数,至于是什么参数,我仔细的看了一下,里面一般情况下直接使用是一个空的对象 {},  然而  在跳转界面之后 ,如果你带有参数的跳转, 这个参数就是进入params   属性中成为一个json来保存十分的强大,至少这个功能的重要性,不言而喻了。

作用: 页面之间的交互。
实例
   父级页面
   justep.Shell.showPage("test.w",{expertID:1});

   子级页面
   model.params.expertID    //  这里等于1



回复 支持 反对

使用道具 举报

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
 楼主| 发表于 2016-11-23 10:09:11 | 显示全部楼层
本帖最后由 LwzWex5 于 2016-11-23 10:55 编辑

Model.prototype.owner
Model.prototype.close();


这是一个拥有两个属性的对象
一个是Close()方法  
一个是send(data)方法

close方法想必不需要我多说了  model有一个属性叫做close,其实这个方法的函数体就是调用的这个 this.owner.close(); 大概意思就是关闭当前页面的样子。
重点是这个send方法,这是一个空函数,之前我也没弄明白,后来到处去查询发帖问,多次试验总算是搞清楚了,这个函数需要自己定义,有点类似与一个回调函数一样的性质,使用的方法,我知道的只有在页面调用跳转事件
justep.Shell.showPage("test.w",null,{
                        owner:{
                                send:function(data){
                                debugger;
                        }
                        }
                });


也就是showPage的第三个函数的用法,很强大,之前看api解释的时候一直没搞清楚owner是什么意思,现在总算有点头绪了。这里定义了一个send函数,里面有一个物理返回值data,这个data是你在子页面(也就是你跳转的页面中)使用 Model.prototype.owner.send(data) 这个方法时,传入的data参数,然后会跳转进入 父级页面定义的send中去。

实例代码
  父级页面
  justep.Shell.showPage("test.w",null,{
                        owner:{
                                send:function(data){
                                alert(data);
                        }
                        }
                });

  子级页面
  Model.owner.send("this a data");

  返回alert弹窗“this a data”
注意,时候我测试了一下,其实,里面的owner对象属性是可以自己定义的,随便顶一个Function的属性,就可以成为一个回调函数。这样就比较能灵活的面对多种需要处理的逻辑了。



回复 支持 反对

使用道具 举报

7

主题

41

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
 楼主| 发表于 2016-11-23 10:52:38 | 显示全部楼层
本帖最后由 LwzWex5 于 2016-11-23 10:53 编辑

Model.prototype.getParentModel()
Model.prototype.getParent()

这两个方法简直没办法吐槽了,我看了一下函数体。。
getParentModel   return this.getParent();
getParent           return this._parentModel;

然后我去看了一眼_parentModel的属性。。
这个就是所谓的嵌套页面的父级Model对象。  很好很强大。。一个页面A可以通过WindowContainer嵌入子页面B,这时页面BModel的getParent返回的是A页面的Model


这个功能的作用也算是不小,可惜我咋就是觉得很尴尬呢。。。

回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 04:16 , Processed in 0.075775 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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