2015-11-09 27 views
1

我創建了一個具有背景圖像,樣式等的自定義菜單,因此我創建了一個單獨的menuTile視圖和控制器並將它發送給背景,標題和回調。如果我使用Require標籤添加多個menuTiles,則所有的tile會觸發最後一個menuTile的回調,而不是它們各自的一個。我相信我的代碼中沒有錯誤/拼寫錯誤,所以也許這是對Require標記或回調的誤解。請協助。Appcelerator:同步到最後回調的多個子視圖

menu.xml文件,Menu.js ...

<View id="vwBody"> 
    <Require src="menuTile" id="menuTile1" /> 
    <Require src="menuTile" id="menuTile2" /> 
    <Require src="menuTile" id="menuTile3" /> 
</View> 

function initializeMenuTiles() { 
    $.menuTile1.initialize({ 
     backgroundImage: 'img1.jpg', 
     title: 'Menu Tile 1', 
     callback: btnMenuTile1Click, 
    }); 
    $.menuTile2.initialize({ 
     backgroundImage: 'img2.jpg', 
     title: 'Menu Tile 2', 
     callback: btnMenuTile2Click, 
    }); 
    $.menuTile3.initialize({ 
     backgroundImage: 'img3.jpg', 
     title: 'Menu Tile 3', 
     callback: btnMenuTile3Click, 
    }); 
} 

MenuTile.js ...

$.initialize = function(args) { 
    $.btnMenuTile.backgroundImage = '/images/' + args.backgroundImage; 
    $.btnMenuTileLabel.text = args.title; 

    if (args.callback) { 
     btnMenuTileClicked_callback = args.callback; 
    } 
}; 

function btnMenuTileClick() { 
    if (btnMenuTileClicked_callback) { 
     btnMenuTileClicked_callback(); 
    } 
} 

所以不管什麼menuTile我點擊,btnMenuTile3Click永遠火。如果我不提供menuTile3的回調,那麼btnMenuTile2Click將始終激活。

回答

2

我沒有看到你在哪裏定義btnMenuTileClicked_callback,因此它將在模塊的全局範圍內,它在所有實例之間共享。

$.initialize...行之前只需補充一點:

var btnMenuTileClicked_callback; 
+0

好看準;-) –