ASP.NET MVCをAngularJS 1.6.5で使用します。かみそりビューでAngularJS 1.6.5入力フィールドの 'value'で角度表現を実行しないようにする方法
、私は、次の入力を有する:
<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"
/>
をModel.Search値は、バックエンドから来る、およびユーザ入力を表します。 ASP.NET MVCは標準的なエンコード/サニタイズ処理をしているので、たとえばhtmlタグを検索することはできません。しかし、角のある式(つまり{{二重中括弧}}で囲まれた式)を調べるサーバー側の検証はありません。
したがって、{{1 + 2} }上記の入力フィールドは式を「3」と評価し、実際に検索したのではなく「3」を検索した入力フィールドが表示されます:「{{1 + 2}}」:
Angularは、基本的にAngularに要素の内容をコンパイルしないように指示する、ngNonBindable directiveを提供します。しかし、これは私の入力フィールドの 'value'属性をバインド不可能にするのに役立ちません。この入力サーバー側(角表現のための独自のサニタイザを実装しています)をサニタイズする必要がありますか、それともnagNonBindableを使用するのと同様の方法がありますか?
ModelSearchが "{{1 + 2}}"の場合、ngValueは引き続き角度表現として評価されます。コメントに感謝しますが、元の質問がどのように解決されるのか分かりません。 – lcaaroe
@Icaaroe私はお詫び申し上げますが、あなたは実際に 'value'属性の補間された式の評価で' ngModel'を初期化しようとしていました。私は別のアプローチで私の答えを更新しました。 –
私は、value属性の式を評価するのを実際に避けようとしています。 – lcaaroe