你如何明确的范围在一个控制器从AngularJS另一个控制器? [英] How do you clear scope in one controller from another controller in AngularJS?
问题描述
我试图创建一个简单的通讯服务(见的jsfiddle)使用AngularJS和它的工作大部分。然而,我的clearAlerts()方法似乎没有产生任何影响。我是新来的角,所以我不知道我做错了吗?
这里的的jsfiddle
http://jsfiddle.net/uberspeck/j46Yh/
...和code
VAR应用= angular.module('应用',[]);功能AlertsCtrl($范围,alertsManager){
$ scope.alerts = alertsManager.alerts;
}功能FooCtrl($范围,alertsManager){
$ scope.doGood =功能(){
alertsManager.addAlert('耶!,警报的成功);
};
$ scope.doEvil =功能(){
alertsManager.addAlert('不要!','警报的错误');
};
$ scope.reset =功能(){
alertsManager.clearAlerts();
};
}App.factory('alertsManager',函数(){
返回{
警报:{},
addAlert:功能(消息,类型){
this.alerts [类型] = this.alerts [类型] || [];
this.alerts【类型】.push(消息);
},
clearAlerts:功能(){
this.alerts = {}; //< =不工作?
}
};
});
帕维尔·科兹洛夫斯基是那种足以通过的 AngularJS邮件列表。我只是不得不改变一行在我AlertsCtrl ...
函数AlertsCtrl($范围,alertsManager){
$ scope.alertsManager = alertsManager;
}
I'm trying to create a simple messaging service (see jsFiddle) using AngularJS and it's working for the most part. However, my "clearAlerts()" method doesn't seem to have any effect. I'm new to Angular, so I'm not sure what I'm doing wrong?
Here's the jsFiddle http://jsfiddle.net/uberspeck/j46Yh/
...and the code
var App = angular.module('App', []);
function AlertsCtrl($scope, alertsManager) {
$scope.alerts = alertsManager.alerts;
}
function FooCtrl($scope, alertsManager) {
$scope.doGood = function() {
alertsManager.addAlert('Yay!', 'alert-success');
};
$scope.doEvil = function() {
alertsManager.addAlert('Noooo!', 'alert-error');
};
$scope.reset = function() {
alertsManager.clearAlerts();
};
}
App.factory('alertsManager', function() {
return {
alerts: {},
addAlert: function(message, type) {
this.alerts[type] = this.alerts[type] || [];
this.alerts[type].push(message);
},
clearAlerts: function() {
this.alerts = {}; // <= not working??
}
};
});
Pawel Kozlowski was kind of enough to provide my answer via the AngularJS mailing list. I simply had to change one line in my AlertsCtrl...
function AlertsCtrl($scope, alertsManager) {
$scope.alertsManager = alertsManager;
}
Check out the new working jsFiddle
这篇关于你如何明确的范围在一个控制器从AngularJS另一个控制器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!