你如何明确的范围在一个控制器从AngularJS另一个控制器? [英] How do you clear scope in one controller from another controller in AngularJS?

查看:131
本文介绍了你如何明确的范围在一个控制器从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;
}

查看新的工作的jsfiddle

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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆