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クライアントを使用して、選択する状態のリストをテーブルに入力します。この関数の重要な部分は、関数の最後に、関数$.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>タグを介してXMLにViewが追加された場合、states.jsコントローラはそのIDを参照してそのビューを処理できるはずであるという印象を受けています。私は行方不明の何か他の何かが間違っているでしょうか?

答えて

0

これはあなたの問題である:

$.activityIndicator.show(); 

それは最初activityIndicatorが必要controlerlessViewに

$.activityIndicator.activityIndicator.show(); 

参照されるべきである。

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

と第二activityIndicatorはあなたですファイル内に定義されているactivityIndi​​catorにアクセスするactivIndic.xml

これははあなたが直接呼び出すあなたstates.jsに、そして最も重要なMethodeの、

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

を公開し、あなたのactivIndic.jsで機能show

+1

ああ、もちろんそれは簡単です。本当にありがとう、私はオフィスに戻ったときにそれを変更することを見ていきます。 – Rampancy

0

を持つオブジェクトであります$.activityIndicator.show();または$.activityIndicator.hide();

+0

質問がコントローラに関するものであっても、activIndic.xmlがコントローラレスのビューであれば正しいはずです。 – TheFuquan

関連する問題