如何在两个 AngularJS 工厂之间使用回调?
How can I use callbacks between two AngularJS factories?
在我的 AngularJS 应用程序中,我有两个名为 "editInfo" 和 "pinVerify" 的工厂。我想要做的是让 editInfo 工厂使用这样的回调函数调用 pinVerify 服务 pinVerify.sendPin(this.saveInfo)
然后将该方法保存在 pinVerify 工厂中,以便在用户输入 pin 并按下调用按钮时使用pinVerify.pinEntered()
问题是回调方法将被复制到 pinVerify 对象中,并且将无法引用 editInfo 工厂中的属性。
所以...我自然而然地尝试在 pinVerify 工厂内使用 $q.defer()
,并在用户输入通过 SMS 发送的 pin 时在 pinVerify.pinEntered()
中解决它。
这工作得很好,我可以在 editInfo 工厂内执行此操作而不是使用回调:
pinVerify.sendPin().then(function() {
this.saveInfo();
}
并且 saveInfo 方法将检测 pin 是否正确并隐藏模式以输入它。当引脚 不正确时出现问题 .
承诺已经解决,因此再次单击调用 pinVerify.pinEntered
的按钮基本上不会执行任何操作。两次都解决不了
所以现在我有点回到我开始的地方,认真考虑在工作期间大量饮酒......
对于如何实现两家工厂之间的这种关系有什么建议吗?我想关于好的 beers/vodkas 的建议也有效。
虽然我在进入 $q promise 之前的第一次尝试看起来像这样但没有奏效 - pinVerify.sendPin(self.saveAddress);
我刚刚使用闭包方法作为回调自己解决了这个问题,然后在其中使用之前声明的 var self = this;
像这样
调用实际方法
pinVerify.sendPin(function() {
self.saveAddress();
});
在我的 AngularJS 应用程序中,我有两个名为 "editInfo" 和 "pinVerify" 的工厂。我想要做的是让 editInfo 工厂使用这样的回调函数调用 pinVerify 服务 pinVerify.sendPin(this.saveInfo)
然后将该方法保存在 pinVerify 工厂中,以便在用户输入 pin 并按下调用按钮时使用pinVerify.pinEntered()
问题是回调方法将被复制到 pinVerify 对象中,并且将无法引用 editInfo 工厂中的属性。
所以...我自然而然地尝试在 pinVerify 工厂内使用 $q.defer()
,并在用户输入通过 SMS 发送的 pin 时在 pinVerify.pinEntered()
中解决它。
这工作得很好,我可以在 editInfo 工厂内执行此操作而不是使用回调:
pinVerify.sendPin().then(function() {
this.saveInfo();
}
并且 saveInfo 方法将检测 pin 是否正确并隐藏模式以输入它。当引脚 不正确时出现问题 .
承诺已经解决,因此再次单击调用 pinVerify.pinEntered
的按钮基本上不会执行任何操作。两次都解决不了
所以现在我有点回到我开始的地方,认真考虑在工作期间大量饮酒......
对于如何实现两家工厂之间的这种关系有什么建议吗?我想关于好的 beers/vodkas 的建议也有效。
虽然我在进入 $q promise 之前的第一次尝试看起来像这样但没有奏效 - pinVerify.sendPin(self.saveAddress);
我刚刚使用闭包方法作为回调自己解决了这个问题,然后在其中使用之前声明的 var self = this;
像这样
pinVerify.sendPin(function() {
self.saveAddress();
});