Невозможно обновить значок на Ionic Tab с помощью сообщения от службы
Хорошо, я довольно новичок в Angular и провел последние 3 часа в этом вопросе.
У меня есть приложение для ионных вкладок, и я хочу обновлять значок на вкладке уведомлений всякий раз, когда что-то происходит, я должен думать, что это проблема с областью видимости, но я запутался
Я просмотрел этот пост и в основном делаю то, что предложено в ответе. Счетчик угловых ионных значков не обновляется.
У меня есть контроллер, который контролирует данные вкладки уведомлений (TabsCtrl). Когда я использую интервал для обновления значка, правильное значение отображается на значке. Но когда я использую службу сообщений, которая передает сообщение, я не могу обновить значок.
Вот странная вещь: я могу буквально войти в консоль, и обновленный счетчик значков есть в TabsCtrl, но когда я устанавливаю $ scope.User, значок не обновляется. Если я нажму на вкладку уведомлений, значок будет обновлен.
В TabsCtrl я слушаю сообщение и получаю его. В настоящее время я обновляю $scope.User = User, но я не получаю обновления для значка. Я могу напечатать User.notificationsCount, и правильное значение отображается на консоли.
Кроме того, когда я использую интервал (закомментированный), он работает просто отлично.
Что мне не хватает??
Tabs.html
<!-- Dashboard Tab -->
<ion-tab title="Activities" icon-off="ion-ios-pulse" icon-on="ion-ios-pulse-strong" href="#/tab/activities">
<ion-nav-view name="tab-activities"></ion-nav-view>
</ion-tab>
<!-- Notifications Tab -->
<ion-tab title="Notifications" ng-controller="TabsCtrl" badge="User.notificationsCount" badge-style="badge-assertive" icon-off="ion-android-notifications-none" icon-on="ion-android-notifications" href="#/tab/notifications">
<ion-nav-view name="tab-notifications"></ion-nav-view>
</ion-tab>
<!-- Settings Tab -->
<ion-tab title="Account" icon-off="ion-ios-cog-outline" icon-on="ion-ios-cog" href="#/tab/account">
<ion-nav-view name="tab-account"></ion-nav-view>
</ion-tab>
</ion-tabs>
TabsCtrl выглядит следующим образом (обратите внимание, у меня есть оба интервала, которые были закомментированы).
angular.module('controllers').controller 'TabsCtrl', ($scope, $stateParams, User, Settings, $interval)->
initialize = ()->
$scope.$on "notification:received", (err,data)->
console.log "nofication"
$scope.User = User
###$interval ()->
$scope.User = User
, 1000###
$scope.User = User
initialize()
return
Как я настраиваю свое приложение
$stateProvider
.state 'tab',
url: '/tab'
abstract: true
controller: "MainCtrl"
templateUrl: 'templates/tabs.html'
resolve:
populateSession : ($state, User)->
return User.populateSession()
.state 'tab.activities',
url: '/activities'
views: 'tab-activities':
templateUrl: 'templates/tab-activities.html'
controller: 'ActivitiesCtrl'
.state 'tab.notifications',
url: '/notifications'
views: 'tab-notifications':
templateUrl: 'templates/tab-notifications.html'
controller: 'NotificationsCtrl'
.state 'tab.account',
url: '/account'
views: 'tab-account':
templateUrl: 'templates/tab-account.html'
controller: 'AccountCtrl'
# if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise '/tab/activities'
return
1 ответ
Попробуйте позвонить $scope.$apply();
внутри вашего обработчика событий "уведомление получено"