@hansgill wrote:
Ok i'm fairly new to angular and spent the last 3 hours on this issue.
I have an ionic tabs app and I want to update the badge on the notifications tab whenever something happens, I gotta think it's a scoping issue but i'm confused
I went through this other post and am basically doing whats proposed in the answer http://stackoverflow.com/questions/32470828/angular-ionic-badge-count-not-updating
I have a controller which controls the notifications tab data (TabsCtrl). When I use the interval to update the badge the correct value shows up on the badge. But when I use a message service which broadcasts the message I am unable to update the badge.
Here's the weird thing: I can literally log to console and the updated badge count is there in TabsCtrl but when I set $scope.User the badge is not getting updated. If I click on the notifications tab, then badge then gets updated.
In TabsCtrl I listen for the message and receive it. At this time I update the $scope.User = User but I get no update on badge. I can print User.notificationsCount and the right value shows on console.
Also, when I use the interval (commented out) it works just fine.
What am I missing??
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 looks like this (notice I have both interval in there which has been commented out).
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
How I setup my app
$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
Posts: 1
Participants: 1