2017-10-09 2 views
1

Mon application construite avec les contrôles AngularJs et KendoUI. J'ai utilisé AutoComplete Text Box tant d'endroits dans l'application. Maintenant le client veut que la recherche soit avec le filtre "Contient". pour le même je dois mettre le filtre: 'contient' partout le contrôle de saisie semi-automatique utilisé.Kendo Ui AutoComplete - Comment changer le filtre par défaut "startWith" en "contient"?

Je souhaite remplacer le filtre par défaut 'startWith' par 'contains' au début de l'application. Alors que je peux échapper à faire changer chaque fichier html.

quelqu'un peut-il savoir comment faire la même chose?

Répondre

0

Je suppose que vous devez mettre à jour votre auto propriété complète de filtre au moins une fois pour toutes les commandes pour soutenir la propriété liaison dynamique et se lient à une certaine configuration de la racine, comme:

<input kendo-auto-complete k-filter="config.autoComplete.defaultFilter" /> 

Ainsi sera en mesure de changer le filtre par défaut à l'avenir en mettant à jour uniquement la valeur de configuration.

Une autre approche - est de remplacer par défaut "setOptions" comportement pour le composant "autocomplete" d'utiliser le filtre correct par défaut quelque part sur l'application début:

var nativeSetOptions = window.kendo.ui.AutoComplete.prototype.setOptions; 

window.kendo.ui.AutoComplete.prototype.setOptions = function(options) { 
    options.filter = 'contains'; 
    nativeSetOptions.call(this, options);  
} 
+0

Je cherche deuxième approche où filtre par défaut primordial. J'ai écrit le code que vous avez donné au début de l'un des fichiers JS mais ça ne fonctionne pas pour moi. – Snehal

+0

Pouvez-vous définir le débogueur dans cette partie? Est-il exécuté lorsque vous ouvrez la page avec une partie autoComplete à l'intérieur? – VadimB

+0

Merci ami ... Il a travaillé pour moi. J'ai ajouté la ligne suivante. Corrigez-moi si vous trouvez quelque chose de mal à cela. window.kendo.ui.AutoComplete.prototype.options.filter = "contient"; – Snehal

1

Vous pouvez utiliser k-attribut options:

<input kendo-auto-complete ng-model="yourModel" k-data-source="yourDataSource" style="width: 100%;" k-options="autocompleteOptions"/> 

puis dans votre contrôleur:

$scope.autocompleteOptions = { 
    filter:"contains" 
}