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

QQ登录

只需一步,快速开始

查看: 3504|回复: 7

[结贴] 动态生成 popMenu

[复制链接]

150

主题

599

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
QQ
发表于 2017-7-4 17:01:50 | 显示全部楼层 |阅读模式
build version : 5.3.6.5569
build time : 2016.10.21 19:17:28



动态生成 popMenu


类似grid 那样,new Grid (option) ,放到某个指定的位置中;

动态生成popMenu ,并且动态生成下拉选项;

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-7-4 17:28:18 | 显示全部楼层
动态创建组件参考http://doc.wex5.com/?p=4202#2.2
动态添加菜单项参考/UI2/system/components/justep/popMenu/demo/base.w
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

150

主题

599

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
QQ
 楼主| 发表于 2017-7-5 11:19:50 | 显示全部楼层
jishuang 发表于 2017-7-4 17:28
动态创建组件参考http://doc.wex5.com/?p=4202#2.2
动态添加菜单项参考/UI2/system/components/justep/popM ...

组件动态创建成功了。。。。
var window = self.getElementByXid("window");
                if (window) {
                    var option = {
                        xid : "popMenuFromSetting",
                        anchor : "moreButton",
                        parentNode : window,
                        'class':"x-popMenu",
                        direction:"left-bottom",
                        dismissible:"true",
                        autoHidable:"true"
                    };
                    popMenu= new PopMenu(option);
                }

但是动态添加菜单项时:
demo中:
var menu = this.comp("menu1");
                menu.addItem({
                        label : "Item" + count++
                });

但是动态创建的popmenu ,menu没有xid,这个要怎么在动态创建popmenu时,设置?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-7-5 14:48:14 | 显示全部楼层
参考
  1.         Model.prototype.button18Click = function(event){
  2.                 var parentNode = this.getElementByXid("top1");       
  3.                
  4.                 var option = {
  5.                         parentNode : parentNode,
  6.                         xid : 'popMenu1',
  7.                         class : 'x-popMenu',
  8.                         anchor : 'button18',
  9.                         dismissible : true,
  10.                         autoHidable : true,
  11.                         opacity : '0.1'
  12.                 };
  13.                
  14.                 var popMenu1= new popMenu(option);

  15.                 var menu = popMenu1.getInnerMenu().addItem({
  16.                         label : "Item"
  17.                 });
  18.                 popMenu1.show();
  19.         };
复制代码
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

150

主题

599

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
QQ
 楼主| 发表于 2017-7-5 15:49:35 | 显示全部楼层
本帖最后由 chaierkid 于 2017-7-5 16:27 编辑

item 已经添加上了,同时我也绑定了事件,但是现在的情况是,在我生成组件时,就会触发一次bind-click事件:
for(var i=0;i<jsonresult.length;i++){
                                                                var column = jsonresult;
                                                            menu.addItem({
                                                        label : column.fFileComment,
                                                       'bind-click':"window.open('"+column.fFildName+"')"
                                                    });
                                                        }

不应该这么绑定么?
然后我换写法为
for(var i=0;i<jsonresult.length;i++){
                                                                var column = jsonresult;
                                                            menu.addItem({
                                                        label : column.fFileComment,
'bind-click':"this.itemClick("+column.fFildName+")"
                                                    });
                                                        }
更多这个按钮都不显现了;

然后,定义方法后调用,同样自动执行一次,看论坛说不能写参数,但是如果不写参数,我参数怎么传递?:
for(var i=0;i<jsonresult.length;i++){
                                                                var column = jsonresult;
                                                            menu.addItem({
                                                        label : column.fFileComment,
                                                        'bind-click':inputExt.itemClick(column.fFildName)
                                                     //论坛说要写成 'bind-click':inputExt.itemClick就不会自动执行,但是不写参数,参数怎么传递?
                                                    });
                                                        }

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-7-5 16:57:29 | 显示全部楼层
  1.         Model.prototype.button18Click = function(event) {
  2.                 var parentNode = this.getElementByXid("top1");

  3.                 var option = {
  4.                         parentNode : parentNode,
  5.                         xid : 'popMenu1',
  6.                         class : 'x-popMenu',
  7.                         anchor : 'button18',
  8.                         dismissible : true,
  9.                         autoHidable : true,
  10.                         opacity : '0.1'
  11.                 };

  12.                 var popMenu1 = new popMenu(option);

  13.                 var menu = popMenu1.getInnerMenu().addItem({
  14.                         label : "Item",
  15.                         xid : "buttonMenu1"
  16.                 });

  17.                 this.comp("buttonMenu1").on("onClick", function(event) {
  18.                         alert(event.source.get('label'));
  19.                 });
  20.                 popMenu1.show();
  21.         };
复制代码
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

150

主题

599

帖子

1205

积分

金牌会员

Rank: 6Rank: 6

积分
1205
QQ
 楼主| 发表于 2017-7-5 17:28:11 | 显示全部楼层

只能这么写么?
这个对我的业务场景不合理呀?
我需要循环additem的,那如果我有多个item,就需要写多个
this.comp("buttonMenu1").on("onClick", function(event) {
                        alert(event.source.get('label'));
                });

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36069
发表于 2017-7-5 17:35:27 | 显示全部楼层
可以直接这样写
  1.         var menu = popMenu1.getInnerMenu().addItem({
  2.                         label : "Item",
  3.                         xid : "buttonMenu1",
  4.                         'onClick' : this.test1
  5.                 });

  6.         Model.prototype.test1 = function(event){
  7.           alert(2);
  8.         }
复制代码




参数是按钮的event,没有其他的参数

如果要在click中中获取什么,就直接写方法,如下:
  1.                 var menu = popMenu1.getInnerMenu().addItem({
  2.                         label : "Item",
  3.                         xid : "buttonMenu1",
  4.                         'onClick' : function(event){
  5.                           window.open('"+column.fFildName+"')
  6.                         }
  7.                 });
复制代码



远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 05:53 , Processed in 0.055933 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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