我有以下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操作的结果如何,都会重置密码,这不是我想要的。
如何从回调中访问控制器?
答案 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={};
})
};
}]);