angular重新加载现有的承诺

时间:2015-07-12 09:18:50

标签: javascript angularjs angular-promise

我有一个服务,它向控制器返回一个承诺:

// .... in the service
this.RefreshData = function() {
    this.data = $q.all( {images: ...., tags: ....}); 
}
RefreshData ();

// .... in the controller
function() OnImages() {.....};
ImageSrv.data.then(OnImages());

但现在其他地方发生了一些事情,我也想刷新我的控制器。让我们说一些指令称我的服务。并刷新它

ImageSrv.RefreshData();

我的承诺已经改变,OnImages现在不会被解雇。 使用promise +事件处理此问题的正确方法是什么?我真的希望我能做一些像

这样的事情
ImageSrv.data.refresh() 

这将改变对未经解决的承诺"并尝试再次解决它。

1 个答案:

答案 0 :(得分:0)

这不是承诺如何运作的。没有机制让承诺意识到他们已经改变了。承诺只解决(或拒绝)一次,然后完成。没有什么可以告诉您的控制器某些内容已发生变化, function(data) { return new Promise(function(resolve,reject){ // do a lot of things with data, reject for invalid data resolve(changed_data); }); } 需要再次运行。

一种解决方案可能是触发控制器将侦听的某些事件,然后重新运行OnImages