2016-04-27 5 views
0

In listview im Inneren habe ich listview Vorlage und seine Innenseite haben verschiedene Elemente und verschiedene Tippen Ereignis-Listener.in Listview beim Scrollen und schnell auf das Element klicken, kann nicht gestoppt werden blättern, es öffnet sich ein Element?

In IOS scrollen Sie schnell und schnell auf dem Bildschirm. es navigiert zu Element Seite statt Stop Scrollen, also möchte ich unten Methode zum Stoppen Scroll nähern. Kann nicht behoben werden.

Erwartetes Ergebnis: Zum Stoppen Scroll Wenn berühren auf dem Bildschirm zu scrollen und dann berühren Sie auf dem Bildschirm zu öffnen Element Seite.

Tatsächliches Ergebnis: Es geht um Teil, kann Scroll nicht stoppen. Während des Scrollens berühren Sie auf dem Bildschirm (Tippen Sie auf Ereignis ausgelöst), anstatt den Bildlauf anzuhalten.

<Page xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="onNavigatingTo"> 
    <ListView items="{{ menu }}" row="1" id="mylist" > 
    <ListView.itemTemplate> 
     <GridLayout columns="auto, *"> 
     <Image src="{{ imageURL }}" row="0" cssClass="icon" tap="myTapListener"/> 
     <StackLayout col="1" tap="myTapListener1"> 
      <Label text="{{ title }}" cssClass="name"/> 
      <Label text="{{ subtitle }}" cssClass="location"/> 
     </StackLayout> 
     </GridLayout> 
    </ListView.itemTemplate> 
    </ListView> 
</Page 



exports.myTapListener = function(args) { 
    var item = args.object; 
    if(item.page.getViewById("mylist").isScrolling) { 
     console.log("Scroll stopped: " + item.page.getViewById("mylist).isScrolling); 
     return; 
    } else { 
     console.log("unable to stop:" + item.page.getViewById("mylist).isScrolling); 
    } 
} 

exports.myTapListener1 = function(args) { 
    var item = args.object; 
    if(item.page.getViewById("mylist").isScrolling) { 
     console.log("Scroll stopped: " + item.page.getViewById("mylist).isScrolling); 
     return; 
    } else { 
     console.log("unable to stop:" + item.page.getViewById("mylist).isScrolling); 
    } 
} 
+0

Wenn ich auf dem Bildschirm berühren (Ereignis ausgelöst) während des Scrollens. Erwartetes Ergebnis: Um zu scrollen Tatsächliches Ergebnis ist: Scroll konnte nicht gestoppt werden. Es wird immer falsch zurückgegeben. Wenn ich wahr bekam dann kann ich mit diesem Ansatz stoppen 'if (item.page.getViewById ("mylist") isScrolling.) { console.log ("Scroll gestoppt:" + item.page.getViewById ("mylist) .isScrolling); return; }' –

Antwort

2

Der Js-Code muss sein:

var frame = require('ui/frame'); 

exports.myTapListener = function(args) { 
    var page = frame.topmost().currentPage; 
    if(page.getViewById("mylist").isScrolling) { 
     console.log(page.getViewById("mylist").isScrolling); 
    } else { 
     topmost().navigate("module/a1") 
    } 
} 

exports.myTapListener1 = function(args) { 
    var page = frame.topmost().currentPage; 
    if(page.getViewById("mylist").isScrolling) { 
     console.log(page.getViewById("mylist).isScrolling); 
    } else { 
     topmost().navigate("module/a2") 
    } 
} 

args.object in diesem Event-Handler ist nicht die Seite Objekt; aber das Element, das das Ereignis generiert. Sie müssen also nur auf die aktuelle Seite verweisen, die frame.topmost(). CurrentPage

+0

ich versucht, navigieren Sie zu stoppen dann i tippen navigieren aber 'page.getViewById (" mylist ") isScrolling' beim scrollen bekam ich Antwort falsch.. –

Verwandte Themen