我有service
这个函数:
this.addSubject = function(categId, data){
$firebase(url.child('discussions').child(categId)).$push(data).then(function (newChildRef) {
console.log("added record with id " + newChildRef.key());
});
};
我在Controller
中调用该函数。但我希望恢复新的ID newChildRef.key()
,以便在我的Controller
中使用它。但如果我回来,就什么都没有。
有没有办法保存这个id
?
或者可以在此功能中调用我服务的其他功能吗?
答案 0 :(得分:1)
您无法从这些功能返回,因为它们是承诺合同的一部分,并且将来会异步发生。你必须做的是让你的函数调用控制器中的方法来告诉它加载的密钥。然后控制器可以响应,UI将跟随。你如何让你的功能知道在哪里打电话?
让控制器向服务中传递服务应该在结果已知时调用的函数。
e.g。
var target = function(id) { // processes id
};
// call the function in your service passing the receiving function
service.addSubject('catid', 'data', target);
并且您的服务需要接收该功能并使用它执行某些操作
this.addSubject = function(categId, data, callback){
$firebase(url.child('discussions').child(categId)).$push(data).then(function (newChildRef) {
console.log("added record with id " + newChildRef.key());
// send to the callback
callback(newChildRef.key());
});
};