I need to make a basic search for some items. I made a simple control, with a button that clears out the search query:
<div class="item item-input item-button-right">
<i class="icon ion-ios-search placeholder-icon"></i>
<input type="text"
placeholder="Search"
ng-model="search">
<button class="button button-icon" ng-if="search" ng-click="search = null">
<i class="icon ion-ios-close-empty"></i>
</button>
</div>
However the button does not work. search
variable is updated properly, but change is not reflected in the view.
After some digging, I wrapped the query string into an object, making a variable search.query
:
<div class="item item-input item-button-right">
<i class="icon ion-ios-search placeholder-icon"></i>
<input type="text"
placeholder="Search"
ng-model="search.query">
<button class="button button-icon" ng-if="search.query" ng-click="search.query = null">
<i class="icon ion-ios-close-empty"></i>
</button>
</div>
Suprisingly, this works as expected: query is cleared out when button is clicked.
How is this possible? Does angular
threats wrapped up scope variables differently from those, which are directly in scope?