2014-09-11 11 views
1

У меня есть контроллер следующие AngularJS:Доступ к контроллеру внутри функции обратного вызова в 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 является формой, что я хочу, чтобы сбросить после того, как успешно POST данные. this.queue={}; внутри функции обратного вызова не работает (что имеет смысл, так как this отличается в этом контексте). Если я перемещаю this.queue={}; вне обратного вызова, мой код работает, но сбрасывает пароль независимо от результата операции POST, чего я не хочу.

Как я могу получить доступ к контроллеру изнутри обратного вызова?

ответ

4

this (контроллер ссылка на объект) отличается от $ области видимости (моделей представления, связанных с шаблоном HTML).

Если вы хотите сбросить 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={}; 
     }) 
    }; 
    }]); 
+0

Правильно, я ответил, что OP должен использовать 'this' в обратном вызове, но им действительно нужно изменить' $ scope' –

Смежные вопросы