У меня есть простое приложение, использующее пользовательский интерфейс Onsen, и я использую преимущества карусели и обновляю данные в зависимости от того, прокручивает ли пользователь влево или вправо текущий элемент карусели. После того, как они пролистнули, я хотел бы удалить этот элемент из карусели, чтобы они не могли добраться до него снова. Я пытаюсь использовать событие postchange, которое работает нормально, но когда я вызываю carousel.refresh(), карусель не обновляется.
Карусель определяется в html следующим образом:
<ons-carousel var="carousel" swipeable overscrollable auto-scroll fullscreen initial-index="1">
<ons-carousel-item ng-repeat="foo in bar.baz">
....
</ons-carousel-item>
</ons-carousel>
Поскольку карусель инициализируется на странице, отличной от первой, я добавил обработчик событий, чтобы следить за новой страницей, помещаемой в навигационный контроллер, и если это страница с каруселью, то инициализировать обработчик для событие postchange карусели и обновить некоторые вещи. Я упростил это для случая этого примера.
ons.ready(function(){
mainNavigator.on('postpush', function(event){
var page = event.enterPage;
if (page.name == "carousel_page.html"){
carousel.on('postchange', function(event){
$scope.bar.baz.splice(event.lastActiveIndex, 1);
setImmediate(function(){
// even setting the array to [] here does not make a difference
carousel.refresh();
});
});
}
});
});
Проходя через все, что я могу проверить, правильно ли обновляется массив за каруселью, и переменная карусели определена нормально, и что вызывается функция refresh (), но моя карусель никогда не обновляется. Что мне здесь не хватает?
Я использую Angular с Onsen, это как-то из-за того, как я добавляю обработчик событий? Это вне цикла $digest или что-то в этом роде?