2013-02-11 127 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