2012-07-03 51 views
0

我在關注miamicoder的sencha touch 2教程,並取得了巨大的成功(http://miamicoder.com/2012/how-to-create-a-sencha-touch-2-然而,因爲我仍然是一個新手這個我的JavaScript知識限制了我一些什麼。在Sench Touch中查看調用控制器的javascript功能2

我想要做的是調用存儲在控制器中的JavaScript函數,但傳遞它的局部變量。下面是我的意見之一初始化宣佈我的代碼多數民衆贊成:

var geo = Ext.create('Ext.util.Geolocation', {autoUpdate: false, listeners: { 
      locationupdate: function(geo) { 
       console.log('Got location: ',geo); 
       findCurrentAddress(geo,"txtFrom"); 
      }, 
      //locationerror: {fn: this.onGotLocation, scope: this } 
      locationerror: function(geo, bTimeout, bPermissionDenied, bLocationUnavailable, message) { 
       alert("deal with this later") 
      } 
     } 
    }); 
    geo.updateLocation(); 

,然後findCurrentAddress的定義是:我如何才能將這一功能轉移到控制器,仍然使其訪問

function findCurrentAddress(geo, txt){ 
    alert("do some stuff with the geo object"); 
} 

這個觀點?就像本教程上面提供的鏈接上的onNewButtonTap事件一樣。

最終結果是一樣的,但我想保持乾淨,但保持功能不變。

我試圖做:

locationupdate: {fn: this.onGotLocation, scope: this } 

,並在控制器,它的工作只是我失去了地理對象與經/緯特性(至少,我不知道如何將它傳遞佈線所需的代碼! )

任何幫助/提示/指針非常感謝! :)

回答

0

爲什麼不從視圖中觸發事件並在您的控制器中訂閱該事件?

是這樣的:

... 
locationupdate: function(geo) { 
    console.log('Got location: ',geo); 
    this.fireEvent('get_loc_update', geo); //this refers to your instance of Ext.util.Geolocation 
}, 
... 

和監聽控制器的get_loc_update事件(或者無論你怎麼稱呼它),這將通過地理對象

1

簡單的答案 - 不要這樣做。您不會從視圖中調用控制器的方法。

+0

我認爲這個想法是,有觀點意在發射一個被控制器捕獲的事件......? – null

+0

是的,查看火災事件。控制器訂閱這些事件並執行一些操作。 – sha

相關問題