我在AngularJS 1.6.5中使用ASP.NET MVC。AngularJS 1.6.5如何避免在輸入字段的'值'中執行角度表達
在Razor視圖,我有以下輸入:
<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標籤。但是,我沒有任何服務器端驗證來檢查是Angular表達式的東西(即,由{{雙大括號}}包圍的表達式)
因此,如果我搜索{{1 + 2} },上面的輸入字段將評估表達式爲「3」,並且輸入字段顯示我搜索「3」,而不是我實際搜索的內容:「{{1 + 2}}」:
Angular提供了ngNonBindable directive,它基本上告訴Angular不編譯元素的內容。但是,這不會幫助我使輸入字段的「值」屬性不可綁定。我是否需要清理這個輸入服務器端(爲角表達式實現我自己的清理器),還是有一種「角度」的方式來實現它,類似於使用ngNonBindable?
如果Model.Search是「{{1 + 2}}」,那麼ngValue仍然被評估爲角度表達式。我很欣賞這個評論,但我不明白它如何解決原來的問題。 – lcaaroe
@Icaaroe我很抱歉,我誤解了這一點,你實際上是在尋找'ngModel'的初始值,以評估'value'屬性的插值表達式。我用不同的方法更新了我的答案。 –
我實際上試圖*避免*評估值屬性中的表達式。 – lcaaroe