Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $add之后获取密钥的最佳方法_Javascript_Angularjs_Angularfire - Fatal编程技术网

Javascript $add之后获取密钥的最佳方法

Javascript $add之后获取密钥的最佳方法,javascript,angularjs,angularfire,Javascript,Angularjs,Angularfire,我使用的是AngularFireV0.5.0 在返回的对象上,我执行$add 获取生成的密钥的最佳方法是什么 它一定是$add的successcallback中的某个东西,因为该键将异步返回 scope.settings = $firebase(ref); scope.settings.value = { vat: { inclusive: true } } } scope.settings.$add (scope.settings.valu

我使用的是AngularFireV0.5.0

在返回的对象上,我执行$add

获取生成的密钥的最佳方法是什么

它一定是$add的successcallback中的某个东西,因为该键将异步返回

scope.settings = $firebase(ref);

scope.settings.value = {
    vat: {
      inclusive: true
    }
}
            }
scope.settings.$add (scope.settings.value).then( function ( {
  scope.settings.key = ???
});
注意:这不是实际代码,这只是为了澄清问题

激活代码在加载的事件中位于工厂内,并且检查数据库中是否已经存在设置对象


这种有点奇怪的构造是为了让工厂的消费者更容易更改设置。设置为单例。AngularFire不返回对象数组,但每个项目都是设置中的一个对象,具有自己的键。

$add
返回Firebase引用。调用该引用上的
name()

scope.settings.$add(…).name();

请参阅angularfire文档中的。

$add方法接受任何类型的单个参数。它会将该值作为列表的一个成员附加(按时间顺序排列)。这相当于对Firebase引用调用push(value)

从firebase文档(关于push()):

返回 生成位置的Firebase引用


因此,我认为您想要的“键”是$add的返回值。

也许他们在新版本中更改了它,现在它的工作原理如下:

$add()将返回一个承诺。您必须使用成功时运行的回调。例如:

var something = $scope.somethings.$add({name: "foo"});
something.then(function(e) {
    console.log(e.name())
});
这允许您根据对Firebase的保存/写入尝试的结果执行不同的操作