2013-02-11 123 views
0

我有一个同事的列表(List.js) 点击同事的列表项目显示细节(Detail.js)。其中一个字段是{skype}。 Skype地址从商店中检索并显示正常。Sencha Touch 2;在两个函数之间传递变量

在详细画面中,我有一个按钮“打电话给我”。目的是开始与同事进行Skype通话。

我添加了一个功能

onOpenSkypeTap: function() { 
    open('skype:{skype}?call'); 
} 

的问题是:SKYPE先从{}的Skype,而不是Skype的同事的姓名发起呼叫。 我想我需要去解决它在CONTROLER文件,但我的尝试是不是succesfull:在CONTROLER文件的 部分:

oncolleagueItemTap: function(list, idx, el, record) { 
    this.getcolleagueContainer().push(this.colleague); 
    this.colleague.setRecord(record); 
    var skypename = record.get ('skype') 
    console.log(skypename);  
}, 

onOpenSkype: function() { 
    console.log(skypename); 
    open('skype:skypename?call'); 
} 

错误消息:未捕获的ReferenceError:Skypename,敲击没有定义

也许是因为var skypename仅为函数定义oncolleagueItemTap

是否可以将此变量传递给函数onOpenSKype? 或者还有其他解决方案吗?

+0

你是如何加入听者通话按钮,你可以使用它? – rdougan 2013-02-12 17:13:28

+0

听众:[{代表:“#openSkype”, event:“tap”, fn:“onOpenSkypeTap” }] – Jelle 2013-02-12 22:18:55

回答

0

您可以将skypename设置为详细信息页面中的一个配置属性,并为此页面提供一个ID。在按钮的水龙头,你可以做到这一点

var name = Ext.getCmp("colleguePageId").config.skypename 

OR

var name = Ext.getCmp("colleguePageId").getRecord().get('skype') 

无论您想去哪里

open('skype:'+name+'?call'); 
+0

Thnx This works。我添加了第二个建议.get('skype')。但是,当我返回到列表并选择一个项目时,我得到一个警告: – Jelle 2013-02-14 08:07:04

+0

[WARN] [Ext.Component#constructor]注册一个已经使用过的id('ColleagueDetail')的组件。请确保现有的组件已经被销毁(Ext.Component#destroy()方法 我加入 Ext.getCmp(“ColleagueDetail”)的destroy(); 要oncolleagueItemTap 但随后没有显示任何内容,从选择项目时 我可以使破坏更具体吗? – Jelle 2013-02-14 08:13:17

+0

我看到一些帖子建议将id更改为itemId以修复Warning。我将其更改为详细信息页面,导致错误:Uncaught TypeError:无法调用方法'getRecord '未定义。 – Jelle 2013-02-16 14:13:39