2013-08-20 48 views
2

我在煎茶触摸开发混合移动应用2. 现在我是在需要的自定义组件是由特定的按钮与沿自定义列表项。煎茶触摸2自定义列表项按钮,轻按没有被解雇

我的观点已经呈现为我想,但如预期那样被添加到列表项的按钮不点火的TAP事件。取而代之的是,ITEMTAP事件会触发每一个点击,这会造成一些混乱。

有人建议我到哪里,使这项工作?

下面是我创建的自定义组件的代码:

var listView = { 
      xtype : "list", 
      id : "desk-list-search-results", 
      cls : "desk-list-search-results-cls", 
      selectedCls : "", 
      defaultType:"desksearchlistitem", 
      store : "deskstore", 
      flex : 2 
     }; 

这是自定义组件

Ext.define("MyApp.view.DeskSearchListItem",{ 
    extend:"Ext.dataview.component.ListItem", 
    requires:["Ext.Button"], 
    alias:"widget.desksearchlistitem", 
    initialize:function() 
    { 
     this.callParent(arguments); 
    }, 
    config:{ 
     layout:{ 
      type:"hbox", 
      align:"left" 
     }, 
     cls:'x-list-item desk-search-list-item', 
     title:{ 
      cls:"desk-list-item", 
      flex:0, 
      styleHtmlContent:true, 
      style:"align:left;" 
     }, 
     image:{ 
      cls:"circle_image", 
      width:"28px", 
      height:"28px" 
     }, 
     button:{ 
      cls:'x-button custom-button custom-font bookdesk-button', 
      flex:0, 
      text:"Book", 
      width:"113px", 
      height:"46px", 
      hidden:true 
     }, 
     dataMap:{ 
      getTitle:{ 
       setHtml:'title' 
      } 
     } 
    }, 
    applyButton:function(config) 
    { 
     return Ext.factory(config,Ext.Button,this.getButton()); 
    }, 
    updateButton:function(newButton,oldButton) 
    { 
     if(newButton) 
     { 
      this.add(newButton); 
     } 

     if(oldButton) 
     { 
      this.remove(oldButton); 
     } 
    }, 
    applyTitle:function(config) 
    { 
     return Ext.factory(config,Ext.Component,this.getTitle()); 
    }, 
    updateTitle:function(newTitle,oldTitle) 
    { 
     if(newTitle) 
     { 
      this.add(newTitle);  
     } 
     if(oldTitle) 
     { 
      this.remove(oldTitle); 
     } 
    }, 
    applyImage:function(config) 
    { 
     return Ext.factory(config,Ext.Component,this.getImage()); 
    }, 
    updateImage:function(newImage,oldImage) 
    { 
     if(newImage) 
     { 
      this.add(newImage); 
     } 
     if(oldImage) 
     { 
      this.remove(oldImage); 
     } 
    } 
}) 

回答

0

终于得到了解决这个代码,

它可以使用侦听器对象完成视图。

这里是它的代码示例。

listeners:{ 
       initialize:function() 
       { 
        var dataview = this; 
        dataview.on("itemtap",function(list,index,target,record,event){ 
         event.preventDefault(); 
        }); 
        dataview.on("itemswipe",function(list,index,target,record,event){ 
         if(event.direction === "right") 
         { 
          var buttonId = target.element.down(".bookdesk-button").id; 
          var buttonEl = Ext.ComponentQuery.query("#"+buttonId)[0]; 
          if(Ext.isObject(buttonEl)) 
          { 
           buttonEl.setZIndex(9999); 
           buttonEl.show({ 
            showAnimation:{ 
             type:"slideIn", 
             duration:500 
            } 
           }); 
           var listeners = { 
            tap:function(btn,e,opt) 
            { 
             console.log("Button Tapped"); 
            } 
           }; 

           buttonEl.setListeners(listeners); 

          } 
          else 
          { 
           console.log("This is not a valid element"); 
          } 
         } 
        }); 
       } 
      } 

谢谢反正。