-1

我试图从列表中调用带有参数的方法/函数,但它既不传递也不调用方法。这是我的代码。这是我的代码

列表

var searchfrieandtab=  Ext.create('Ext.List', {
    width: 320,
    height: 290,
    id : 'searchfriendslist1',
    itemTpl: ['<div style="margin:0px;background:#fff;" >'+
              '<table style="margin:0px;padding:0px;height:40px;" width="100%" >'+
              '<tr><td style="padding:2px 5px;width:90%;"><span><img src="data:image/jpeg;base64,{userImage}"/>'+
              '</span><span>{userFirstName}</span></td>'+
              '<td style="padding:2px 10px;width:10%;">'+
              '<img src="resources/img/addplus.png" onclick="invitefriends{\'{userId}\')"/>'+//HERE AM CALLING THE METHOD
              '</td></tr></table></div>'].join(),
    listeners : {
        itemtap: function (list, index, item, record, senchaEvent) {
            if (senchaEvent.event.target.nodeName == 'IMG') {
                var data = record.getData();
                var itemId = data.itemId;
                var itemPurchased = data.itemPurchased;
            }
         }
     }
});

方法

function invitefriends(friendid) {
 alert("check",friendid);

 Ext.Ajax.request({
    //url: App.gvars.apiurl + 'InviteFriends/userID='+App.gvars.userid+'/friendID='+friendid, // url : this.getUrl(),
    url:'http://192.168.1.155:8181/WishList/InviteFriends/userID=1/friendID='+friendid,
    method: "GET",
    useDefaultXhrHeader: false,
    withCredentials: true,
    success: function (response) {
          var respObj = Ext.JSON.decode(response.responseText);
    if(respObj[0].response=="Success"){
        alert(Response)
        Ext.Msg.alert("Invite Friends",respObj[0].MailResponse);
    }else{
       Ext.Msg.alert("Error",respObj[0].errorMsg);
    }

    },
    failure: function (response) {
        Ext.Msg.alert("Error",response.responseText);
    }

});

}

我的代码有什么问题?请帮我解决

4

2 回答 2

2

这一块是错的invitefriends{\'。'{' 应该是一个 '('。

您的代码在这里看起来很奇怪"errorMsg": "".您是否尝试在成功方法中声明一个变量?从我可以看到它们没有被使用,删除这些行(“errorMsg”和“MailResponse”)。

我不赞成这个问题,因为您没有首先检查您的代码中是否存在此类错误。

于 2013-09-04T06:30:24.757 回答
1

在列表 itemtap 事件中触发一个自定义事件。

        listeners : {
            itemtap: function (list, index, item, record, senchaEvent) {
                if (senchaEvent.event.target.nodeName == 'IMG') {
                    var data = record.getData();
                    var itemId = data.itemId;
                    var itemPurchased = data.itemPurchased;
                    this.fireEvent('onItemTap',this,itemId,itemPurchased);
                }

            }
        }

在控制器中处理该事件

Ext.define('SF.controller.TestController', {
    extend : 'Ext.app.Controller',    
    config : {
        refs : {
            searchfriendslist1 : '#searchfriendslist1'
        },
        control :{
            searchfriendslist1 : {
                onItemTap : 'invitefriends'
            }
        }
    },

    viewgiftdetails : function(list,itemId,itemPurchased) {
          console.log(itemId);
          console.log(itemPurchased);
    }
});
于 2013-09-04T09:54:34.043 回答