如何在两个AngularJS工厂之间使用回调?

时间:2015-07-22 17:36:49

标签: javascript angularjs angularjs-service

在我的AngularJS应用程序中,我有两个名为“editInfo”和“pinVerify”的工厂。我想要做的是让editInfo工厂使用像这个pinVerify.sendPin(this.saveInfo)这样的回调函数调用pinVerify服务,然后将该方法保存在pinVerify工厂中,以便在用户输入引脚并按下按钮时pinVerify.pinEntered()

问题在于callback-method将被复制到pinVerify对象中,并且无法引用editInfo工厂中的属性。

所以...当然我尝试在pinVerify工厂内使用$q.defer(),并在用户输入短信发送的密码时在pinVerify.pinEntered()解析。

这非常合适,我可以在editInfo工厂内执行此操作而不是使用回调:

pinVerify.sendPin().then(function() {
    this.saveInfo();
}

saveInfo方法将检测引脚是否正确并隐藏模式以输入它。如果引脚不正确,则会出现问题。

承诺已经解决,所以再次单击调用pinVerify.pinEntered的按钮基本上不会做任何事情。我无法解决它两次。

所以现在我回到了我开始的地方,并认真考虑在工作时大量饮酒......

关于如何在两家工厂之间实现这种关系的任何建议?关于好啤酒/伏特加的建议我也猜不过。

1 个答案:

答案 0 :(得分:0)

虽然在进入$ q承诺之前我的第一次尝试看起来像这样并且没有用 - pinVerify.sendPin(self.saveAddress);

我刚刚使用一个闭包方法作为回调来解决它,然后在它内部使用之前声明的var self = this;调用实际方法

pinVerify.sendPin(function() {
    self.saveAddress();
});