$scope.phone
不是有效的属性名称文字。你可以使用"$scope.phone"
:
$scope.messages.$add({
"$scope.phone" : {
username: $scope.username,
email: $scope.email,
dob: $scope.dob
}
});
... 但它会创建与实际名称,这可能不是你想要的属性。看看这个字面意思,我不能从名字中弄清楚你真正想要什么,我不能使phone
与其他字段名称相关。
回复您的评论:
See this example: usersRef.set({ alanisawesome: { date_of_birth: "June 23, 1912", full_name: "Alan Turing" } Instead of alaniawesome I want to have phone as my key.
你不能这样做,在一个对象初始化,在它的属性初始化的属性名组成部分总是从字面上理解。你必须做,在两个单独的语句:
var obj = {};
obj[alanisawesome] = { date_of_birth: "June 23, 1912", full_name: "Alan Turing" };
usersRef.set(obj);
做是因为在JavaScript中,访问属性名称的对象初始化之外时,您可以使用点符号和文字属性名称( obj.foo
)或括号内记法和字符串属性名称(obj["foo"]
)。在后一种情况下,字符串可以是任何表达式的结果,包括变量引用。
你不能有'$ scope.phone'为重点的名字 – 2014-09-05 12:09:30
@ codename-:是, 您可以。但他们可能不想。 – 2014-09-05 12:11:24
@ T.J.Crowder:我的意思是你不能写他的方式。我把你的答案作为一个字符串,而不是变量 - 有两个不同的东西。 – 2014-09-05 12:40:34