J'utilise ASP.NET MVC avec AngularJS 1.6.5.AngularJS 1.6.5 Comment éviter l'exécution de l'expression angulaire dans la 'valeur' du champ de saisie
Dans une vue Razor, j'ai l'entrée suivante:
<input id="live-search-input"
class="live-search__input"
type="search"
name="search"
autocomplete="off"
ng-model="searchTerm"
ng-model-options="{debounce: 500}"
ng-click="resultsClick($event)"
value="@Model.Search"
/>
La valeur Model.Search vient du back-end, et représente l'entrée utilisateur. ASP.NET MVC s'occupe d'un tas de codage/désinfection standard, donc je ne pouvais pas, par exemple, rechercher des balises html. Cependant, je n'ai aucune validation côté serveur pour vérifier quelque chose qui est une expression angulaire (c'est-à-dire une expression entourée de {{doubles accolades}})
Donc, si je cherchais {{1 + 2} }, le champ de saisie ci-dessus évaluerait l'expression à "3" et le champ de saisie afficherait "3", plutôt que ce que je cherchais réellement: "{{1 + 2}}":
Angular fournit ngNonBindable directive, qui indique essentiellement à Angular de ne pas compiler le contenu de l'élément. Cependant, cela ne m'aide pas à rendre l'attribut 'value' de mon champ de saisie non-liable. Dois-je désinfecter ce côté du serveur d'entrée (en mettant en œuvre mon propre désinfectant pour les expressions angulaires), ou y a-t-il une manière «angulaire» de le faire, similaire à l'utilisation de ngNonBindable?
Si Model.Search est "{{1 + 2}}", ngValue est toujours évalué comme une expression angulaire. J'apprécie le commentaire, mais je ne comprends pas comment il résout la question initiale. – lcaaroe
@Icaaroe Je m'excuse, j'ai mal compris le point, vous cherchiez en fait à initialiser le 'ngModel' avec l'évaluation de l'expression interpolée de l'attribut' value'. J'ai mis à jour ma réponse avec une approche différente. –
J'essaie en fait * d'éviter * d'évaluer l'expression dans l'attribut value. – lcaaroe