无法使用来自服务的消息更新 Ionic Tab 上的徽章
Unable to update badge on Ionic Tab using message from a Service
好的,我是 angular 的新手,在这个问题上花了最后 3 个小时。
我有一个离子标签应用程序,我想在发生任何事情时更新通知标签上的徽章,我认为这是一个范围界定问题,但我很困惑
我经历了另一个 post 并且基本上正在做答案中建议的事情
我有一个控制通知选项卡数据 (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
尝试在 "notification:received" 事件处理程序中调用 $scope.$apply();
好的,我是 angular 的新手,在这个问题上花了最后 3 个小时。
我有一个离子标签应用程序,我想在发生任何事情时更新通知标签上的徽章,我认为这是一个范围界定问题,但我很困惑
我经历了另一个 post 并且基本上正在做答案中建议的事情
我有一个控制通知选项卡数据 (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
尝试在 "notification:received" 事件处理程序中调用 $scope.$apply();