0

Ich habe einen Aktivitätsindikator, den ich in seiner eigenen Ansicht gemacht habe, damit ich es dann in jede meiner Ansichten 'begleitenden Tabellen einfügen konnte, die ein Teil der Suchfunktionalität für Eigenschaften sind meine App.Schwierigkeit, Controller-lose Ansicht zu einer anderen Ansicht hinzuzufügen

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 ist eine Funktion, die von einem "offenen" Ereignis-Listener aufgerufen wird, der an das Statusfenster gebunden ist. pullStates() verwendet einen HTTP-Client, um die Tabelle mit einer Liste von Zuständen zu füllen, aus denen ausgewählt werden kann. Der wichtige Teil dieser Funktion ist, dass am Ende der Onload-Funktion $.activityIndicator.hide() aufgerufen wird, so dass im Wesentlichen sobald die Daten geladen sind der Indikator verschwindet.

Aber ich bin immer einen Fehler

[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 

Ich verstehe nicht, warum der Fehler auftritt. Ich habe den Eindruck, dass, wenn eine Ansicht über den Tag <Require> dem XML hinzugefügt wird, der states.js-Controller in der Lage sein sollte, diese Ansicht zu handhaben, indem er auf seine ID verweist. Gibt es noch etwas, das ich vermisse oder etwas falsch eingerichtet habe?

Antwort

0

Das ist Ihr Problem:

$.activityIndicator.show(); 

sollte es

sein
$.activityIndicator.activityIndicator.show(); 

die erste activityIndicator auf die erforderliche controlerlessView Bezug ist:

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

und die zweite activityIndicator ist, dass Sie Zugriff auf den activityIndicator, der in der Dateidefiniert ist

das ist das Objekt, das die Funktion show

+1

Oh Mann, natürlich ist es so einfach. Vielen Dank, ich werde es ändern, wenn ich wieder im Büro bin. – Rampancy

0

In Ihrem activIndic.js Setzen Sie die wichtigste Methode,

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

dann in Ihrem states.js Sie direkt hat rufen $.activityIndicator.show();

+0

Das wäre richtig gewesen, wenn die Frage über Controller war, aber activIndic.xml ist eine Ansicht ohne Controller. – TheFuquan

Verwandte Themen