在我的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
的按钮基本上不会做任何事情。我无法解决它两次。
所以现在我回到了我开始的地方,并认真考虑在工作时大量饮酒......
关于如何在两家工厂之间实现这种关系的任何建议?关于好啤酒/伏特加的建议我也猜不过。
答案 0 :(得分:0)
虽然在进入$ q承诺之前我的第一次尝试看起来像这样并且没有用 - pinVerify.sendPin(self.saveAddress);
我刚刚使用一个闭包方法作为回调来解决它,然后在它内部使用之前声明的var self = this;
调用实际方法
pinVerify.sendPin(function() {
self.saveAddress();
});