Javascript 如何在ionic上增加徽章中的数字

Javascript 如何在ionic上增加徽章中的数字,javascript,ionic,badge,Javascript,Ionic,Badge,我想在徽章上增加一个数字 我在“app.js”中设置了数字0 我制作了减号按钮、加号按钮和文本框 文本框中有一个数字 如果我按下减号或加号按钮,数字就会改变 我在按钮单击功能中添加了一个操作 但徽章上的号码没有改变 这是我更改号码的代码 example.controller('EventController',['$scope',function($scope){ $scope.count=0; $scope.countBadge=0; $scope.$on('order减号',函数(){ 如

我想在徽章上增加一个数字

我在“app.js”中设置了数字0

我制作了减号按钮、加号按钮和文本框

文本框中有一个数字

如果我按下减号或加号按钮,数字就会改变

我在按钮单击功能中添加了一个操作

但徽章上的号码没有改变

这是我更改号码的代码

example.controller('EventController',['$scope',function($scope){
$scope.count=0;
$scope.countBadge=0;
$scope.$on('order减号',函数(){
如果($scope.count!=0){
$scope.count--;
}
如果($scope.countBadge!=0){
$scope.countBadge--;
}
});
$scope.$on('orderPlus',function(){

如果($scope.count代码的问题是,您多次实例化EventController,因此每个实例的$scope是不同的(这就是为什么在按钮所在的$scope中计数器会得到更新,但在另一个EventController$scope上计数器不会更新:它不会侦听相同的作用域事件

考虑到您的方法,最简单的解决方案是使用$rootScope而不是$scope,因此您在$rootScope上侦听并发出消息,两个EventController都会注意到这些更改

另一个更干净的方法是将count和countBadge放在服务(即单例)中,并创建一个手表,以确保当一个控制器更新计数器时,另一个控制器获得更新的值

我在代码片段中附加了第一个解决方案,对代码进行了一点清理以使其清晰:

example.controller('EventController',['$scope','$rootScope',function($scope,$rootScope){
$scope.count=0;
$scope.countBadge=0;
$scope.emit=$rootScope.$emit;
$rootScope.$on('order减号',函数(){
如果($scope.count!=0){
$scope.count--;
}
如果($scope.countBadge!=0){
$scope.countBadge--;
}
});
$rootScope.$on('orderPlus',function(){
如果($scope.count)

您的标题栏和内容容器使用两个单独的控制器分配。两个控制器互不了解。您应该为它们使用一个控制器(在公共父元素上),或使用某种方式在两个控制器实例之间进行通信。太好了!!它工作正常。实际上,我复制了许多行代码。因此,我不知道$emit是什么意思。$emit的作用是什么?使用$rootScope。$emit('message1')向上发送一个称为“message1”的事件,任何订阅者都检测不到(您可以使用$rootScope.$on('message1')订阅该事件。您也可以使用$rootScope.$broadcast('message1'),但在这种情况下,事件将向下传递到作用域,因此就性能而言,最好保持在顶级作用域($rootScope)上,并使用$emit和subscribe($on)这样可以防止事件通过多个作用域。