2013-06-20 188 views
1

怎麼辦正從控制器勝利是認爲怎麼做之後獲得視圖呼叫從getView(控制器)

var c = Alloy.createController('win', activeTab); 
c = c.getView(); 
Wins.push(c); 

的控制器贏控制器我有功能

exports.fun = function() { 

}; 

我打電話從視圖這個功能,我需要控制調用的函數

for (i = 0; i < Wins.length; i++) { 
Wins[i].fun(); 
} 

勝[i]是一個視圖我如何得到一個對照這種觀點的奧勒,這樣我可以調用函數fun()

回答

3

不推窗,推控制器

// this is a bad name for a controller... 
var controller = Alloy.createController('win', activeTab); 
var view = controller.getView(); 

// save the controller to a list of global controllers 
Alloy.Globals.Controllers = Alloy.Globals.Controllers || {}; 
Alloy.Globals.Controllers['aController'] = controller; 


// loop through all controller and execute func if it exists 
for (var i in Alloy.Globals.Controllers) { 
    Alloy.Globals.Controllers[i].fun && Alloy.Globals.Controllers[i].fun(); 
} 
+0

這會工作,但我已經有大量的代碼庫,我不能改變所有添加控制器,這些觀點已經在不同地點多次被添加和引用,所以從它的角度來看,沒有任何方法合金可以獲得控制器? – skcrpk

+2

我認爲你的代碼庫不能那麼大,你不能做一個搜索,以確定你在哪裏做'createController並添加更多的代碼......但你的問題的答案是否定的,沒有函數來獲取控制器從視圖中...還添加功能的視圖是在結構上錯誤的方向...這是控制器的用途,這就是爲什麼合金創建。 –