如何在更改值时刷新收集重复列表

时间:2016-07-17 14:56:13

标签: angularjs ionic-framework

我有一个collection-repeat元素,在视图上有很多数据,我想在从元素中选择一个选项时更改它的排序。虽然它为$ scope.isAscending变量分配了正确的值,但是collection-repeat列表没有更新。

<ion-view cache-view="false">
  <ion-content on-scroll="onContentScroll()">
    <div class="list">
    <label class="item item-input item-select item-light">
      <div class="input-label">
        Sorting:
      </div>
      <select ng-model="selectField" ng-change="chooseSorting(selectField)">
        <option value="true">ascending</option>
        <option value="false">descending</option>
      </select>
    </label>

    <label class="item item-input">
            <i class="icon ion-ios-search placeholder-icon"></i>
            <input type="text" placeholder="Search" ng-model="q">
        </label> 
    </div>

    <div collection-repeat="item in items | orderBy: item.year: !isAscending | itemFilter: q  | groupByProperty" divider-collection-repeat>
        <ion-item  class="item item-thumbnail-left item-button-right">
            <a class="item-thumbnail-left" ng-click="openModal(item)">
              <h3>{{item.name}}</h3>
              <p>{{item.properties[0]}}</p>
              <p>{{item.properties[3]}}</p>
            </a>
        </ion-item>
    </div>
  </ion-content>
</ion-view>

我在指定选项后尝试调用$ scope。$ apply(function(){$ scope.isAscending = value}),它更新了范围值,但它没有刷新重复列表$ state。 go()也不起作用。 有没有办法刷新收集重复列表?

1 个答案:

答案 0 :(得分:0)

如果我理解您的问题,您希望根据year更改过滤select,对吗?

如果是这样,首先您不需要使用ng-change,第二个orderBy 过滤器只需要property(在您的情况下year })。

  1. 将您的select更改为:
  2. <select ng-model="selectField">
       <option value="">ascending</option>
       <option value="false">descending</option>
    </select>
    
    1. 将您的repeat更改为:
    2. <div collection-repeat="item in items | orderBy: year: selectField | itemFilter: q  | groupByProperty" divider-collection-repeat>
      

      查看orderBy过滤器的文档。