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

QQ登录

只需一步,快速开始

楼主: reoyha

[结贴] 自定义tabs

  [复制链接]

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36178
发表于 2016-11-23 15:56:55 | 显示全部楼层
看了一下组件的js文件,应该不能动态创建,那就把需要的都先加上通过bind-visible控制是否显示
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

90

主题

333

帖子

896

积分

高级会员

Rank: 4

积分
896
QQ
 楼主| 发表于 2016-11-23 17:06:59 | 显示全部楼层
jishuang 发表于 2016-11-23 15:56
看了一下组件的js文件,应该不能动态创建,那就把需要的都先加上通过bind-visible控制是否显示 ...

好像只能这么搞了
回复 支持 反对

使用道具 举报

90

主题

333

帖子

896

积分

高级会员

Rank: 4

积分
896
QQ
 楼主| 发表于 2016-11-24 17:27:14 | 显示全部楼层
jishuang 发表于 2016-11-23 15:56
看了一下组件的js文件,应该不能动态创建,那就把需要的都先加上通过bind-visible控制是否显示 ...

现在效果出来了,但是如果页签太多在低分辨率电脑上会换行,影响展示。
有没有左右滚动的按钮,或者滚动条?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36178
发表于 2016-11-25 09:15:41 | 显示全部楼层
可以自己放一个div里面放按钮控制左右滑动,或者参考/UI2/demo/netease/index_main.w中的
div.png
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

90

主题

333

帖子

896

积分

高级会员

Rank: 4

积分
896
QQ
 楼主| 发表于 2016-11-25 10:24:02 | 显示全部楼层
jishuang 发表于 2016-11-25 09:15
可以自己放一个div里面放按钮控制左右滑动,或者参考/UI2/demo/netease/index_main.w中的 ...

tabs左右滑动应该调用哪个方法或css?netease那个好像不符合客户要求
回复 支持 反对

使用道具 举报

90

主题

333

帖子

896

积分

高级会员

Rank: 4

积分
896
QQ
 楼主| 发表于 2016-11-25 11:18:08 | 显示全部楼层
本帖最后由 reoyha 于 2016-11-25 11:32 编辑
jishuang 发表于 2016-11-25 09:15
可以自己放一个div里面放按钮控制左右滑动,或者参考/UI2/demo/netease/index_main.w中的 ...

标签太多的话,初始化时第二行无法点击,改变页面大小才可以点击 QQ图片20161125112514.png
回复 支持 反对

使用道具 举报

13

主题

52

帖子

252

积分

中级会员

Rank: 3Rank: 3

积分
252
QQ
发表于 2016-11-25 11:41:27 | 显示全部楼层
  1. define(function(require) {
  2.         var $ = require("jquery");
  3.         var WindowDialog = require("$UI/system/components/justep/windowDialog/windowDialog");
  4.         var justep = require("$UI/system/lib/justep");
  5.         var common = require("$UI/PI_NEW/common/js/common");
  6.         require("css!$UI/PI_NEW/common/css/PI_NEW").load();
  7.        
  8.         var showAlert=true;
  9.         //var FProjectID="";
  10.         //var FProjectName="";
  11.         //var sBusinessCode="";
  12.        
  13.         var Model = function() {
  14.                 this.callParent();
  15.                 this.FProjectID="";
  16.                 this.FProjectName="";
  17.                 this.sProcess="/PI_NEW/change/process/changeFoundApply/changeFoundApplyProcess";
  18.                 this.fileType="变更立项";
  19.                 this.sAct=this.getContext().getActivity();
  20.                 this.pagePattern = this.getContext().getRequestParameter("_pagePattern");
  21.                 this.sParmID = this.getContext().getRequestParameter("sRowID");
  22.                 this.sID = this.getContext().getRequestParameter("sID");       
  23.                 this.checkAlert="";
  24.                 this.selectType="";
  25.         };

  26. Model.prototype.navs1Click = function(event){
  27.                 this.comp("contents").to(event.index);
  28.                 var win=null;
  29.                 var url="";
  30.                 var params=null;
  31.                 var id=this.comp("mainData").getCurrentRowID();
  32.                 var sBizState=this.comp("mainData").getValue("fBizState");
  33.                 var winNum=0;
  34.                 if ((' editActivity queryActivity addActivity'.indexOf(this.sAct)>0) && (this.sID == "") && (this.sParmID == "")){
  35.                         winNum=event.index;
  36.                 }else{
  37.                         winNum=event.index + 1;
  38.                 }               
  39.                 if (winNum==2){
  40.                         win=this.comp("windowContainer2");
  41.                         if ((this.sAct=="queryActivity") || (this.pagePattern=="readonly") || (this.sParmID)){
  42.                                 url="$UI/PI_NEW/common/process/Execute/queryActivity.w";
  43.                         }else{
  44.                                 url="$UI/PI_NEW/common/process/Execute/editActivity.w";
  45.                                 if ((' editActivity addActivity'.indexOf(this.sAct)>0) && (sBizState!='bsEditing')){
  46.                                         url="$UI/PI_NEW/common/process/Execute/queryActivity.w";
  47.                                 }
  48.                         }
  49.                         params={id:id,fileType:this.fileType};
  50.                         win.load(url, params);
  51.                 }
  52. //                if (winNum==3){
  53. //                        win=this.comp("windowContainer3");
  54. //                        url="$UI/PI_NEW/report/process/changeRtp/CHCBRFoundRpt.w";
  55. //                        params={id:id,fileType:this.fileType,table:this.comp("mainData").idColumn};
  56. //                        win.load(url, params);
  57. //                }
  58.                 if (winNum==3){
  59.                         win=this.comp("windowContainer4");
  60.                         url="$UI/PI_NEW/report/process/changeRtp/CHFoundActivity.w";
  61.                         var sOgnID=this.comp("mainData").getValue("fCreateOgnID");
  62. //                        url="$UI/PI_NEW/report/process/changeRtp/CHZDFoundRpt.w";
  63. //                        var sChangeType=this.comp("mainData").getValue('fChangeType');
  64. //                        if (sChangeType>'01'){
  65. //                                url="$UI/PI_NEW/report/process/changeRtp/CHJDFoundRpt.w";
  66. //                        }
  67.                         params={id:id,fileType:this.fileType,table:this.comp("mainData").idColumn,sOgnID:sOgnID};
  68.                         win.load(url, params);
  69.                 }
  70.                 if (winNum==4){
  71.                         win=this.comp("windowContainer5");
  72.                         url="$UI/PI_NEW/common/process/Execute/ChartActivity.w";
  73.                         params={id:id,process:this.sProcess};
  74.                         win.load(url, params);
  75.                 }
  76.                 if (winNum==5){
  77.                         win=this.comp("windowContainer1");
  78.                         if ((this.sAct=="queryActivity") || (this.pagePattern=="readonly") || (this.sParmID)){
  79.                                 url="$UI/PI_NEW/common/process/docCenter/queryActivity.w";
  80.                         }else{
  81.                                 url="$UI/PI_NEW/common/process/docCenter/editActivity.w";
  82.                                 if (sBizState!='bsEditing'){
  83.                                         url="$UI/PI_NEW/common/process/docCenter/queryActivity.w";
  84.                                 }
  85.                         }                       
  86.                         params={id:id,fileType:this.fileType};
  87.                         win.load(url, params);
  88.                 }
  89.         };
复制代码
我是新人 这是前辈写的 研究下应该会对你有帮助
QQ截图20161125112916.png
QQ截图20161125113030.png
QQ截图20161125113104.png
QQ截图20161125113736.png

嵌入的页面

嵌入的页面
回复 支持 反对

使用道具 举报

90

主题

333

帖子

896

积分

高级会员

Rank: 4

积分
896
QQ
 楼主| 发表于 2016-11-25 12:44:25 | 显示全部楼层
zhb2034 发表于 2016-11-25 11:41
我是新人 这是前辈写的 研究下应该会对你有帮助

十分感谢,我看看
回复 支持 反对

使用道具 举报

64

主题

471

帖子

1127

积分

金牌会员

Rank: 6Rank: 6

积分
1127
发表于 2016-11-25 14:16:24 | 显示全部楼层
本帖最后由 qldsrx 于 2016-11-25 14:18 编辑

想要自定义tabs,建议用bootstrap的或其它第三方的,我花了点时间给你写了一个利用bootstrap的动态扩展函数封装,你可以自己试试效果。
第一步,添加js、css资源,例如:
  1.     <script type="text/javascript" charset="utf8" src="jquery-3.1.1.min.js"></script>
  2.     <link rel="stylesheet" href="bootstrap-3.3.0/css/bootstrap.min.css">
  3.     <script src="bootstrap-3.3.0/js/bootstrap.min.js"></script>
复制代码

x5默认会引用前面2个资源,第三个bootstrap.min.js估计不会有,你需要自行添加扩展它。

第二步,页面中某个需要动态添加tab的地方,添加如下html,id可以自行修改,建议改为xid和官方统一下,避免一些组件使用异常:
  1.     <div id="myTab">
  2.         <ul class="nav nav-tabs" role="tablist"></ul>
  3.         <div class="tab-content"></div>
  4.     </div>
复制代码


第三步,添加如下javascript代码,可以按需微调,目前已经支持添加动态html标签了:
  1.     <script>
  2.         //添加自定义标签页,支持html内容,index从0开始,不给则添加到最后
  3.         function insertTab(parentDOM, titleHtml, contentHtml, index) {
  4.             if (!parentDOM) return null;
  5.             var $tablist = $('ul[role=tablist]', parentDOM);
  6.             var $tabcontent = $('div.tab-content', parentDOM);
  7.             var num = $tablist.children().length;
  8.             if (num && index && index > -1 && index < num) {
  9.                 $('<li role="presentation"><a href="#tab'+num+'" role="tab" data-toggle="tab">' + titleHtml + '</a></li>').insertBefore($tablist.children()[index]);
  10.                 $('<div role="tabpanel" class="tab-pane" id="tab'+num+'">' + contentHtml + '</div>').insertBefore($tablist.children()[index]);
  11.             } else {
  12.                 $('<li role="presentation"><a href="#tab' + num + '" role="tab" data-toggle="tab">' + titleHtml + '</a></li>').appendTo($tablist);
  13.                 $('<div role="tabpanel" class="tab-pane" id="tab' + num + '">' + contentHtml + '</div>').appendTo($tabcontent);
  14.             }
  15.             if (!num) {
  16.                 $tablist.find('a[role=tab]').tab('show');
  17.             }
  18.         }
  19.     </script>
复制代码


第四步,测试。浏览器F12控制台下面,输入以下js代码,可以看到动态添加的tab效果:
  1. p=document.getElementById('myTab')
  2. insertTab(p,'t1','内容1')
  3. insertTab(p,'t2','内容2')
  4. insertTab(p,'t3','<iframe src="http://www.baidu.com" style="width:100%;height:100%"></iframe')
复制代码

由于iframe部分出现了跨域访问,因此控制台有个错误提示,但不影响页面内容的加载。

到此为止,所有动态添加tab的过程已经完成,至于动态添加的tab内容部分,如果需要再动态产生X5的组件,则需要看相关组件的动态创建方法(部分组件的动态创建有BUG)
回复 支持 反对

使用道具 举报

90

主题

333

帖子

896

积分

高级会员

Rank: 4

积分
896
QQ
 楼主| 发表于 2016-11-25 14:24:01 | 显示全部楼层
qldsrx 发表于 2016-11-25 14:16
想要自定义tabs,建议用bootstrap的或其它第三方的,我花了点时间给你写了一个利用bootstrap的动态扩展函数 ...

十分感谢,我试试,
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 15:45 , Processed in 0.061586 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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