2016-02-15 1 views
0

J'essaie de faire du textchange en répéteur et de rechercher ce lien.TextChange dans le répéteur nativescript

Basic blur event in a Telerik Nativescript Mobile App

Il fonctionne en simple textfield mais pas de travail dans répéteur. Rien n'est mal réglé?

XML:

<Repeater id="lstSelectedItemsSingle" items="{{itemsSingle}}"> 
        <Repeater.itemTemplate> 
         <GridLayout columns="auto,*,auto,*,auto" rows="auto,auto,1" padding="6" id = "{{ matchId + dataType + 'GridSingle'}}"> 
          <GridLayout columns="*,*,*" rows="40" col="3" borderRadius="6" borderWidth="1" borderColor="#DBDBDB" > 
           <button backgroundImage="res://reduce_enable" style="background-repeat:no-repeat;background-position: 50% 50%" backgroundColor="#BFBFBF" /> 
           <TextField col="1" backgroundColor="#ffffff" col="1" text="{{stake}}" style="text-align:center" keyboardType="number" /> 
           <button backgroundImage="res://add_icon_enable" col="2" style="background-repeat:no-repeat;background-position: 50% 50%" backgroundColor="#BFBFBF" col="2"/> 
          </GridLayout> 
         </GridLayout> 
        </Repeater.itemTemplate> 
       </Repeater> 

Modèle:

exports.onPageLoaded = function(args){ 
    page = args.object; 

    viewM.set("stake", "2"); 

    viewM.addEventListener(observable.Observable.propertyChangeEvent, function (event) { 
     console.log(event.propertyName); 
     } 
    }); 
} 
+0

Pourriez-vous s'il vous plaît préciser ce que vous essayez d'atteindre, et de fournir un minimimal exemple complet et vérifiable (http://stackoverflow.com/help/mcve) –

+0

Vous pourriez essayer d'utiliser un objet 'ListView' au lieu d'un répéteur, cela pourrait faire la différence ... –

Répondre

0

Il est probablement parce que les répéteurs sont liés à une liste d'éléments - habituellement observables. Si vous vous connectez à l'intérieur du répéteur en utilisant "{{}}", NativeScript recherchera cette méthode sur cet objet spécifique dans le répéteur. Donc, votre code devrait être structuré de quelque chose comme ça (tapuscrit) ...

import { Observable, EventData } from 'data/observable'; 
import { Page } from 'ui/page'; 

class Item extends Observable({ 
    text: string = ''; 
    constructor(text: string) { 

     this.text = text; 

     this.todos.on(ObservableArray.changeEvent, (args: any) => { 
      // handle text change 
     }); 
    } 
}); 

class ViewModel extends Observable({ 
    items: ObservableArray<Items> 

    constructor() { 
     this.items = new ObservableArray<Items>({ 
      new Item('Thing 1'), 
      new Item('Thing 2') 
     }); 
    } 
}); 

let loaded = (args: EventData) => { 
    let page = <Page>args.object; 
    page.bindingContext = new ViewModel(); 
} 

export { loaded }