Le modèle Durandal Startkit ne contient pas de recherche implémentée (c'est OK). Ce que peut-être ce qu'il devrait avoir est une propriété observable et la lier. J'essaie de vous montrer ici comment lier un texte de recherche à cette démo, mais il recherche la mauvaise valeur (ancienne valeur).Comment rechercher une liaison de texte avec Durandal/Knockout Startkit?
Voici le ViewModel: Shell.js (hors de la boîte)
define(['plugins/router', 'durandal/app'], function (router, app) {
return {
router: router,
search: function() {
app.showMessage('Search not yet implemented...');
},
activate: function() {
router.map([
{ route: '', title:'Welcome', moduleId: 'viewmodels/welcome', nav: true },
{ route: 'flickr', moduleId: 'viewmodels/flickr', nav: true }
]).buildNavigationModel();
return router.activate();
}
};
});
I ajouté la propriété observable: searchText et modifié la fonction de recherche pour afficher sa 'valeur':
searchText: ko.observable(),
search: function() {
app.showMessage('Search not yet implemented... Searching for: ' + this.searchText());
},
et je lié à la vue: shell.html
<input type="text" class="search-query" placeholder="Search" data-bind="value: searchText">
Quelque chose ne va pas, la valeur dis joué dans la recherche est le ancienne valeur, pas l'actuel. Apparemment, la fonction de recherche est d'abord exécutée, puis la valeur de searchText est définie/mise à jour. Mais je ne suis pas sûr.
Comment nous pouvons résoudre ce problème? (pour utiliser la dernière valeur pendant la recherche)