学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例

2016-02-19 10:19 4 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐学习YUI.Ext第七日-View&JSONView Part Two-一个画室网站的案例,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - Web开发 】

之前在Part 1简单介绍了Veiw和JSONView。今天这里小弟为大家说说应用的案例,原本Jack的Image Chooser是一个非常好的案例,当中包含Jack大量的奇技淫巧,不过正因为这样,过于深奥,小弟我亦不能全盘吃透,只挑其“勃大茎深”之处,与君共勉之!
本文包含四大知识点:1.在LayoutDialog中加入Tabs;2.View的使用方式;3.JSONView的使用方式;4.获取XML/JSON的fields值与分页

演示地址

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)


  A View is generally used to build a quick template-based display of datamodel, rather than building a more complex grid. I thnk there's a blog post that illustrates doing this with JSON data. Templates can be used for any repetitious html creation, not necessarily tied to a datamodel.
主要的意思是View用于展示DataModel的数据,Part 1已经说过。这里是来自fourm某君的补充。

代码点评:

1.先看一段简单的

//用yui.ext做翻转按钮, super easy(美工最爱!?^^)showBtn = getEl('showIntro');showBtn.on('click', this.showDialog, this, true);showBtn.applyStyles("cursor:pointer");showBtn.on('mouseover', function(){showBtn.dom.src='images/over_10.gif'}, this, true);showBtn.on('mouseout', function(){showBtn.dom.src='images/btn_10.gif'}, this, true);

//左边动画效果,createDelegate()负责轮换效果var luo=getEl("left_pic");luo.move('right', 250, true, .1, function(){  luo.dom.src='images/'+who+".gif";  luo.move('left', 250, true, .15, null, YAHOO.util.Easing.easeOutStrong);}.createDelegate(this));

2.在LayoutDialog中加入Tabs

LayoutDialong分两个区域:west & center。而center之中我们要加入tabs,并逐一附加active的事件

var center = layout.getRegion('center'); var tab1 = new YAHOO.ext.ContentPanel('luo', {title: '罗老师作品'}); center.add(tab1); center.add(new YAHOO.ext.ContentPanel('chen', {title: '陈老师作品'})); 
//center.on('panelactivated',function(){// alert(center.titleTextEl);//}, this, true);//center.showPanel('center');/*two ways to activate the tabs.and tabs= many CPs如果在BasicDialog中,只需要dialog本身就可以获取getTabs,因为Dialog本身就是唯一的一个Region;但在LayoutDialog中,Region是多个的,所有要指明哪个一个Region才行*/
// stoe a refeence to the tabs 获取TABS集合var tabs = layout.getRegion('center').getTabs();//逐一加入事件tabs.getTab('center').on('activate', function(){this.show_thumb('student')}, this, true);tabs.getTab('luo').on('activate', function(){this.show_thumb('luo')}, this, true);tabs.getTab('chen').on('activate',function(){this.show_thumb('chen')}, this, true);//center.showPanel('chen'); //用Region激活也可以/*Tips:不能立即激活事件,会点延时,经过多行代码的延时便ok !用addbufferlistener理论上也可以*/layout.getRegion('center').getTabs().activate('center');

3.View的使用方式

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)
//XML:index方式访问字段;JSON:直接使用字段名var tpl = new YAHOO.ext.Template( 'div class="thumb"'+'divimg onclick=popupDialog("userfiles/image/'+who+'/{0}",{2},{3}) '+' src=userfiles/image/lite_'+who+'/{0}/div' + 'div文件大小: {1}/div'+'/div'); tpl.compile(); //“编译DOM”加速var schema = {tagName: 'row',//Item项id: 'id',//ID如不需要时,设置空白字符串,不能取消!fields: ['filename','filesize','width','height']//读取的字段};var dm = new YAHOO.ext.grid.XMLDataModel(schema);var mainView = new YAHOO.ext.View('pic_'+who, tpl,dm, {singleSelect: true,//If JSON,还需指定一个config:jsonRootemptyText : 'div style="padding:10px;"没有匹配的内容!/div'}); dm.on('load',function(){}, this, true); mainView.on('click', function(vw, index, node, e){//alert('Node "' + node[] + '" at index: ' + index + ' was clicked.')},this, true);mainView.prepareData = function(data){// prepare,用于自定义格式//如JSON方式直接属性名访问,e.g data.sizeString = formatSize(data.size);data[1] = formatSize(data[1]);return data;};//用DataModel加载文件,如果是JSONView,这个服务由JSONView本身(UpdateManager)提供dm.load('xml.asp?who='+who);

4.JSONView的使用方式

var dh = YAHOO.ext.DomHelper; dh.append(document.body, {tag: 'div', id: 'editUserDialog-user'}); //XML:index方式访问字段;JSON:直接使用字段名var tpl = new YAHOO.ext.Template('Username: {username}' + 'Birthday: {birthday}' + 'Member Since: {join_date}' + 'Last Login: {last_login}'); tpl.compile(); var mainView = new YAHOO.ext.JsonView('pic', tpl, {  singleSelect: true,  jsonRoot: 'user',  emptyText : 'No images match the specified filter'}); mainView.load("test.asp", "id=2"); //JSONView特有的异常事件mainView.on('loadexception', function(){onLoadException()}, this, true);var onLoadException= function(v,o){ alert('Error'); };

5.获取XML/JSON的fields值与分页

这两个问题放在一起讨论的原因是至今我还不能实现。如果按照jack的办法:

mainView.on('click', function(vw, index, node, e){alert('Node "' + node.id + '" at index: ' + index + ' was clicked.');});
可得到index但node.id无法获取。我只好用较丑陋的方式实现:
//在Domhelper中“硬”输出click事件var tpl = new YAHOO.ext.Template( 
'div class="thumb"'+
'divimg onclick=popupDialog("userfiles/image/'+who+'/{0}",{2},{3}) '+
' src=userfiles/image/lite_'+who+'/{0}/div' +
'div文件大小: {1}/div'+
'/div'
);

分页:
View的分页视乎应该通过DataModel。但我没成功过。如知道缘由的朋友恳请告之。
http://www.ajaxjs.com/yuicn/article.asp?id=20070239

来源:http://www.tulaoshi.com/n/20160219/1594230.html

延伸阅读
标签: Web开发
使用“设计”模式进行网页设计的时候经常会出现垃圾代码font和/font  使用VisualStudio的查找替换功能可以将这些东西彻底消除  CTRL + H  打开替换功能  选中正则表达式,关掉大小写匹配  查找内容为   \/*font[^]*\  替换为空  全部替换  OK全部清楚了·V...
Intent :当找到与设置的Intent限制相同的Activity时候通过startActivity()就会启动该Activity 电话播号器: intent.setAction("android.intent.action.CALL"); intent.addCategory("android.intent.category.DEFAULT"); intent.setData(Uri.parse("tel:" + strmobile)); startActivity(intent);//方法内部会自动为Intent添加类别:android.inten...
标签: Web开发
XMLHTTP应用参考  一、使用步骤:  1、创建XMLHTTP对象 //需MSXML4.0支持  2、打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。  3、发送指令。  4、等...
《七日杀》游戏心得 《七日杀》 游戏心得 一进游戏,就发现操作简单明了,跟CS差不多,而且开始能用拳头扁僵尸,体形大的我就不敢大,跑远了僵尸也不追,路上到处搜索建筑材料和物品(到处都是),就是些垃圾堆,估计没多少钱开发设计直接点,地图还真大啊! ...
标签: 养生 健康
适量饮茶,好处很多。如果饮茶过浓,饮茶时间,方法不合适,不同体质的人选用一样的饮茶方法,或用茶水送部分药等,不仅是起不到好作用,反而于身体不利。自古来,我国人民对喝茶是很讲究。在饮茶生活中对时间、浓淡、冷热、新陈以及不同的人如何饮茶等都有丰富经验。前人总结不同时间、不同情况下饮茶的作用是不一样的,如早茶使人心情愉...

经验教程

291

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部