Двухсторонняя привязка данных не работает в <ion-content>

0

Двусторонняя привязка данных не ворует в <ion-content>. Я не могу получить обновленное значение переменной $ scope ("searchKeyword" в этом случае). Если я поместил html вне <ion-conent> тогда он будет работать. Я очень смущен этим поведением. Работает код,

<ion-view view-title="Search" >
  <div class="bar bar-header item-input-inset" style="height:52px;">
    <label class="item-input-wrapper">
      <i class="icon ion-ios-search placeholder-icon"></i>
      <input type="search" placeholder="Search" ng-model="searchKeyword" ng-keyup="$event.keyCode == 13 ? search() : null">
    </label>
    <button class="button button-clear" ng-click="search()">
      search
    </button>
  </div>
  <ion-content scroll="true" style="margin-top:50px;" >

  </ion-content>
</ion-view>

но ниже не :(

 <ion-view view-title="Search" >

      <ion-content scroll="true" style="margin-top:50px;" >
    <div class="bar bar-header item-input-inset" style="height:52px;">
        <label class="item-input-wrapper">
          <i class="icon ion-ios-search placeholder-icon"></i>
          <input type="search" placeholder="Search" ng-model="searchKeyword" ng-keyup="$event.keyCode == 13 ? search() : null">
        </label>
        <button class="button button-clear" ng-click="search()">
          search
        </button>
      </div>
      </ion-content>
    </ion-view>

Здесь функция search() я не получает обновленное значение "searchKeyword". Ниже мой контроллер,

angular.module('myapp')
.controller('SearchController',function($scope){
$scope.searchKeyword='';
  $scope.search=function(){
    console.log('search keyword : '+$scope.searchKeyword);
  };
})
  • 0
    Это может быть потому, что где-то по пути, внутри вашей иерархии областей, была создана дочерняя область. Затем, когда он назначен, он создает копию переменной в дочерней области, которая является копией переменной в родительской области - нарушена двусторонняя привязка. Попробуйте добавить «точку» в вашей ngModel. Т.е. $ scope.my.searchKeyword
  • 0
    Инициализируйте в вашем контроллере $ scope.my = {searchKeyword: ''};
Показать ещё 3 комментария
Теги:
ionic-framework
data-binding
ionic

1 ответ

2

$scope.searchKeyword в search() и ng-model относятся к разным областям после изменения значения ввода, потому что <ion-content> создает новую область. К сожалению, для примитивных значений это нужно проработать. Пожалуйста, см. Этот ответ SO для более глубокого объяснения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню