Angularjs 除非您切换选项卡,否则Ionic Tab Badge不会更新
我在app.js-->$ionicPlatform.ready函数中添加通知并处理接收通知事件。选项卡有自己的tabCtrl,tab Badge从badgeService获取值 收到通知后,在app.js-->$ionicPlatform.ready-->onReceive func中,它将更新服务徽章值 但现在的问题是,在app.js中通过badgeService更新徽章编号后,不会立即更新选项卡徽章,但当切换到其他选项卡时,它会更新 那么,为什么服务数据更改不更新tabCtrl范围值呢?是否因为更新app.js中的服务徽章不会触发tabCtrl 顺便说一句,我通过服务功能绑定tab badge值只是为了避免$broadcast,我在app.js中尝试了$broadcast,在tabCtrl中尝试了$on,这很有效,但我担心这不是最佳做法 下面是我如何定义tabCtrl的:Angularjs 除非您切换选项卡,否则Ionic Tab Badge不会更新,angularjs,ionic-framework,Angularjs,Ionic Framework,我在app.js-->$ionicPlatform.ready函数中添加通知并处理接收通知事件。选项卡有自己的tabCtrl,tab Badge从badgeService获取值 收到通知后,在app.js-->$ionicPlatform.ready-->onReceive func中,它将更新服务徽章值 但现在的问题是,在app.js中通过badgeService更新徽章编号后,不会立即更新选项卡徽章,但当切换到其他选项卡时,它会更新 那么,为什么服务数据更改不更新tabCtrl范围值呢?是否
angular.module('app').controller('app.tabs.tabsController',
function ( $scope, $rootScope, badgeService) {
$scope.badges =function(){
return badgeService.setBadgeCount();
}
}])
tab.html:
<ion-tab title="Message" icon-on="ion-social-buffer-outline positive" icon-off="ion-social-buffer-outline" href="#/tab/message" badge="badges()" badge-style="badge-assertive">
<ion-nav-view name="message"></ion-nav-view>
</ion-tab>
我已经用上面的代码创建了一个代码笔。 这是有效的。。。。很奇怪,为什么我的应用程序不能这样运行。。。 任何想要参考的人,请检查:
我已经用上面的代码创建了一个代码笔。 这是有效的。。。。很奇怪,为什么我的应用程序不能这样运行。。。 任何想要参考的人,请检查:
请注意,异步更新范围中的变量时,不会执行视图绑定 您可能希望使用中所述的
$scope.$apply(function(){})
来更新回调中的变量
我已经成功地将此方法用于ionic选项卡标记,解决了我在Android上的问题(更改选项选项卡中的首选项应更新其他非活动选项卡图标上的标记)。请注意,当范围中的变量异步更新时,不会执行视图绑定 您可能希望使用中所述的
$scope.$apply(function(){})
来更新回调中的变量
我已经成功地将此方法用于ionic选项卡徽章,解决了我在Android上的问题(更改选项选项卡中的首选项应更新其他非活动选项卡图标上的徽章)
app.factory('badgeService', function (localStorageService) {
var setBadgeCount = function () {
var count = 0;
var badgeInfos = localStorageService.get('badgeInfo');
if (badgeInfos) {
for (var i = 0; i < badgeInfos.length; i++) {
count += badgeInfos[i].msgInfos.length;
}
}
if (count > 0 && count <= 99) {
return count.toString();
} else if (count > 99) {
return "99+";
} else {
return "";
}
}
return {
setBadgeCount: setBadgeCount
}
})
$ionicPlatform.ready(function () {
var onReceiveNotification = function(){
badgeService.setBadgeCount();
})
//check this link: http://codepen.io/sylfree9999/pen/GZyjae