$scope.messages.$add({
$scope.phone : {
username: $scope.username,
email: $scope.email,
dob: $scope.dob
}
});
我正在将一些数据插入到Firebase数据库中但是会丢失属性ID。我查看了以下问题:angular js - missing : after property id
但在我的情况下,手机需要成为关键。那么如何为我的案例制作一个对象?
答案 0 :(得分:1)
$scope.phone
不是有效的属性名称文字。您可以使用"$scope.phone"
:
$scope.messages.$add({
"$scope.phone" : {
username: $scope.username,
email: $scope.email,
dob: $scope.dob
}
});
... 但它会创建一个具有该实际名称的属性,这可能不是您想要的。看看那个文字,我无法从名字中找出你真正想要的东西,我不能使phone
与其他字段名相关。
重新评论:
请参阅此示例:usersRef.set({alanisawesome:{date_of_birth:" 1912年6月23日",full_name:" Alan Turing"}而不是alaniawesome我想要手机我的钥匙。
您无法在对象初始值设定项中执行此操作,其中属性初始值设定项的属性名称部分始终按字面意思执行。您必须在两个单独的陈述中执行此操作:
var obj = {};
obj[alanisawesome] = { date_of_birth: "June 23, 1912", full_name: "Alan Turing" };
usersRef.set(obj);
这是有效的,因为在JavaScript中,当访问对象初始值设定项的外部的属性名称时,您可以使用点表示法和文字属性名称(obj.foo
),或括号表示法和 string 属性名称(obj["foo"]
)。在后一种情况下,字符串可以是任何表达式的结果,包括变量引用。
答案 1 :(得分:1)
您不能在对象文字中使用值作为属性名称。
您需要先创建对象,然后使用括号语法使用值
设置属性var msg = {};
msg[$scope.phone] = {
username: $scope.username,
email: $scope.email,
dob: $scope.dob
};
$scope.messages.$add(msg);