dojox.mobile.currentView ist null, nachdem von einer Registerkarte zur anderen gewechselt wurde
-
12-12-2019 - |
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:
Wenn ich jedoch entweder auf die zweite oder dritte Registerkarte klicke, werden beide über die erste verschoben:
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?
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 :(