【发布时间】:2015-07-12 09:18:49
【问题描述】:
我有一个向控制器返回承诺的服务:
// .... 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 现在不会触发。 用承诺+事件来处理这个问题的正确方法是什么?我真的希望我能做类似的事情
ImageSrv.data.refresh()
这会将承诺更改为“未解决”并尝试再次解决它。
【问题讨论】:
-
RefreshData()不应该将 promise 存储在消耗它的.data中,而是return它!您需要在每次调用后重新附加处理程序。 -
@Bergi 我很清楚,无论谁调用了 RefreshData,都可以轻松地重新附加他的处理程序。我问的是所有已经附加到前一个承诺实例的可怜的控制器和服务......
标签: javascript angularjs angular-promise