2017-10-20 19 views
0

Je ne peux pas obtenir la valeur de mon champ de texte lié. J'ai utilisé le modèle d'onglet. Sur l'émulateur Microsoft Android. Y at-il quelque chose que j'ai besoin d'ajouter à l'onglet principal?Page de l'onglet Nativescript textfield

Voir

<GridLayout class="page-content"> 
    <StackLayout orientation="vertical"> 
     <Label class="page-icon fa" text="&#xf002;"></Label> 
     <TextField id="txtSearch" text="{{ search }}" hint="Search" keyboardType="email" autocorrect="false" autocapitalizationType="none" /> 
     <Button text="Sign in" tap="searchClick" /> 
    </StackLayout> 
</GridLayout> 
var SearchViewModel = require("./search-view-model"); 

var svm = new SearchViewModel(); 

function onLoaded(args) { 
    var component = args.object; 
    component.bindingContext = new SearchViewModel(); 
} 

exports.searchClick = function() {  

    svm.searches() 
     .catch(function(error) { 
      console.log(error); 
      dialogsModule.alert({ 
       message: "Unfortunately we could not find your account.", 
       okButtonText: "OK" 
      }); 
      return Promise.reject(); 
     }) 
     .then(function() { 
      //frameModule.topmost().navigate("views/list/list"); 
     }); 
}; 

exports.onLoaded = onLoaded; 

modèle Pour une raison viewModel.get ("search") ne renvoie rien. Le bouton se déclenche très bien.

const observableModule = require("data/observable"); 
var fetchModule = require("fetch"); 

//Info is the returning object 
function SearchViewModel(info) { 
    info = info || {}; 

    var viewModel = new observableModule.fromObject({ 
      search: info.search || "" 
    }); 

    viewModel.searches = function() { 
     var test = viewModel.get("search"); 
     return fetchModule.fetch(config.apiUrl + viewModel.get("search"), { 
      method: "GET", 
      headers: { 
       "Content-Type": "application/json" 
      } 
     }) 
     .then(handleErrors) 
     .then(function(response) { 
      return response.json(); 
     }) 
     .then(function(data) { 
      config.token = data.Result.access_token; 
     }); 
    }; 

    return viewModel; 
} 

Répondre

0

Vous pouvez simplement utiliser this.search, Ou vous pouvez utiliser this.get("search")

Edit: également sur une note de côté, Dans votre code derrière le fichier, vous créez

var svm = new SearchViewModel();

Mais vous n'attribuez pas svm en tant que bindingContext, vous créez plutôt une nouvelle instance de SearchViewModel. Cela pourrait causer un comportement inattendu plus tard.

+0

Aucune différence avec this.get ("search") Désolé, je n'ai pas collé l'événement click qui utilise le svm. Je vais l'ajouter. Y a-t-il une autre façon d'utiliser un composant à sa place? – Jason

+0

Faites-le. Dans votre code, écrivez 'component.bindingContext = svm;' à la place de la ligne courante –

+0

Effectivement essayé aussi. On dirait que ma fonction onLoaded n'est jamais touchée ou du moins qu'elle n'atteint pas mon point de rupture. Donc, les liaisons ne se produisent jamais. – Jason