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?
 
     
    