从AngularJS中的回调函数内部访问控制器

时间:2014-09-11 18:39:50

标签: javascript angularjs scope

我有以下AngularJS控制器:

controllers.controller('QueuesCtrl', ['$scope', 'QueueRes',function($scope,QueueRes) {

    $scope.queues = QueueRes.query();
    this.queue={};

    this.create = function() {
        QueueRes.save(this.queue,function(){
            this.queue={};
        })

    };

  }]);

对象this.queue是一个表单,我想在成功发布数据后重置。回调函数内部的this.queue={};不起作用(这是有道理的,因为this在该上下文中是不同的)。如果我将this.queue={};移到回调之外,我的代码可以工作,但无论POST操作的结果如何,都会重置密码,这不是我想要的。

如何从回调中访问控制器?

1 个答案:

答案 0 :(得分:4)

this (控制器对象引用)与 $ scope (绑定到html模板的视图模型)不同。

如果要在$ scope上重置queue,可以直接使用

$scope.queue = {};

否则,您可以将this存储在变量中,并使用该变量来设置队列。

controllers.controller('QueuesCtrl', ['$scope', 'QueueRes',function($scope,QueueRes) {
    var me = this;

    $scope.queues = QueueRes.query();
    me.queue={};
    this.create = function() {
        QueueRes.save(this.queue,function(){
            me.queue={};
        })
    };
  }]);