Frage

Ich verwende die folgenden Tab-Steuerelemente:

function tweetsAction()
{
    var w = dojox.mobile.currentView;
    if (w.id != "tweetsView") w.performTransition('tweetsView', 1, "slide", null);
}

function secondAction()
{
    var w = dojox.mobile.currentView;
    if (w.id != "secondView") w.performTransition('secondView', 1, "slide", null);
}

function thirdAction()
{
    var w = dojox.mobile.currentView;
    if (w.id != "thirdView") w.performTransition('thirdView', 1, "slide", null);
}

Initialisieren Sie sie in Worklight-JavaScript, wie zum Beispiel:

function initCommonControls()
{
    console.log("Android initCommonControls");

    WL.TabBar.init();
    WL.TabBar.addItem("tweetsView", tweetsAction, "Tweets", {image:"images/icons/help_bw.png", imageSelected:"images/icons/help.png"});
    WL.TabBar.addItem("secondView", secondAction, "Second", {image:"images/icons/help_bw.png", imageSelected:"images/icons/help.png"});
    WL.TabBar.addItem("thirdView", thirdAction, "Third", {image:"images/icons/help_bw.png", imageSelected:"images/icons/help.png"});

    WL.TabBar.setSelectedItem("tweetsView");
}

Tabs werden beim App-Start in Ordnung angezeigt:

enter image description here

Wenn ich jedoch entweder auf die zweite oder dritte Registerkarte klicke, werden beide über die erste verschoben:

enter image description here

Und ich sehe diesen JavaScript-Fehler in der JS-Konsole:

Nicht erfasster TypeError:Die Eigenschaft „id“ von undefiniert kann nicht gelesen werden

Das bedeutet, dass `var w = dojox.mobile.currentView;Die aktuelle Ansicht kann nach dem Verlassen der ursprünglichen Registerkarte nicht aufgerufen werden.

So sieht mein HTML aus:

<!-- Tweets View -->
    <div id="tweetsView" data-dojo-type="dojox.mobile.ScrollableView" data-dojo-props="selected: true">
        <div class="spacing"></div>
        <h1 id="head0" data-dojo-type="dojox.mobile.Heading" 
            data-dojo-props="label:'Tweet Search', fixed:'top'"></h1>
        <button onclick="getTweets()">Get Tweets</button>
        <input data-dojo-type="dojox.mobile.TextBox" id="sampleItem">
        <ul data-dojo-type="dojox.mobile.EdgeToEdgeList" id="theTable"
            class="tweetviewList">
        </ul>
    </div>

    <!-- second View -->
    <div id="secondView" data-dojo-type="dojox.mobile.ScrollableView" data-dojo-props="selected:false">
        <div class="spacing"></div>
        <h1 data-dojo-type="dojox.mobile.Heading" 
            data-dojo-props="label:'second view', fixed:'top'"></h1>
        This is a second view
    </div>

    <!-- third View -->
    <div id="thirdView" data-dojo-type="dojox.mobile.ScrollableView" data-dojo-props="selected:false">
        <div class="spacing"></div>
        <h1 data-dojo-type="dojox.mobile.Heading" 
            data-dojo-props="label:'third view', fixed:'top'"></h1>
        This is a third view
    </div>

Irgendwelche Ideen, warum das dojox.mobile.currentView Gibt es nach dem Tab-Wechsel nichts zurück?

War es hilfreich?

Lösung

Ich würde vermuten, dass es damit zusammenhängt: http://bugs.dojotoolkit.org/ticket/15040.Klingt, als hätten sie dojox.mobile.currentView aus den neuesten Versionen von Dojo Mobile entfernt.Ich mache gerade ein paar Sachen mit Worklight und bekomme auch „undefiniert“ für dojox.mobile.currentView.

Auf dieser Seite gibt es ein paar Empfehlungen, aber es scheint, dass jetzt alles viel komplexer sein muss – juhuu :(

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top