我有一个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()也不起作用。 有没有办法刷新收集重复列表?
答案 0 :(得分:0)
如果我理解您的问题,您希望根据year
更改过滤select
,对吗?
如果是这样,首先您不需要使用ng-change
,第二个orderBy
过滤器只需要property
(在您的情况下year
})。
select
更改为:<select ng-model="selectField">
<option value="">ascending</option>
<option value="false">descending</option>
</select>
repeat
更改为:<div collection-repeat="item in items | orderBy: year: selectField | itemFilter: q | groupByProperty" divider-collection-repeat>
查看orderBy过滤器的文档。