2017-03-10 58 views
0

我有一個活動指示器,我在它自己的視圖中進行創建,這樣我就可以將它放在每個視圖的附屬表中,這些表是屬性搜索功能的一部分我的應用程序將無控制器視圖添加到另一個視圖中很困難

activIndic.xml

<Alloy> 
<ActivityIndicator id="activityIndicator" message="Loading..." indicatorColor="Alloy.CFG.design.colors.hudBlue" 
    style="Titanium.UI.ActivityIndicatorStyle.BIG_DARK" 
    > 
</ActivityIndicator> 

states.xml

<Alloy> 
<Window id="winState" class="container vgroup" title="Search | States" > 
    <Label text="Click a state to continue." class="searchWinHint" id="hint"></Label> 
    <Require id="activityIndicator" src="activIndic" type="" ></Require> 
    <TableView id="stateList" class="tableView-search"> 
    </TableView> 
</Window> 

states.js - searchState()

function searchState(){ 
$.activityIndicator.show(); 
pullStates(); 
$.stateList.addEventListener("click", function(e){ 
    //Create global state abbreviation name 
    args.stateAbbr = e.row.children[1].text; 
    Alloy.createController("search_tab/counties", args).getView().open(); 
    }); 
$.winState.add($.stateList);} 

searchState是一個函數,它從與狀態窗口綁定的「打開」事件偵聽器中調用。 pullStates()使用HTTP客戶端來填充表格,並列出可供選擇的狀態列表。這個函數的重要部分是在它的onload函數的末尾調用$.activityIndicator.hide()被調用,所以基本上一旦數據被加載,指示器就會消失。

不過,我得到一個錯誤

[ERROR] : TiExceptionHandler: (main) [951,2005] ----- Titanium Javascript Runtime Error -----[ERROR] : TiExceptionHandler: (main) [1,2006] -In /alloy/controllers/search_tab/states.js:1,336[ERROR] : TiExceptionHandler: (main) [0,2006] - Message: Uncaught TypeError: i.activityIndicator.show is not a function 

我不明白爲什麼錯誤發生。我的印象是,如果通過<Require>標記將一個View添加到XML中,那麼states.js控制器應該能夠通過引用它的id來處理該視圖。還有其他的東西,我錯過了,或者可能是設置錯誤?

回答

0

這是你的問題:

$.activityIndicator.show(); 

應該

$.activityIndicator.activityIndicator.show(); 

第一activityIndicator指的是所需要的controlerlessView:

<Require id="activityIndicator" src="activIndic" type="" ></Require> 

和第二activityIndicator是你訪問文件中定義的activityIndi​​cator

這是具有功能show

+1

哦,男人,當然是那麼簡單。非常感謝你,當我回到辦公室時,我會改變它。 – Rampancy

0

在你activIndic.js暴露的最重要梅索德對象,

$.show = function(status){ 
    $.activityIndicator.show(); 
} 
$.hide = function(status){ 
    $.activityIndicator.hide(); 
} 

然後,在你的states.js你直接調用$.activityIndicator.show();$.activityIndicator.hide();

+0

如果問題是關於控制器的話,那將是正確的,但是activIndic.xml是一個無控制器視圖。 – TheFuquan

相關問題