2014-09-05 144 views
0
$scope.messages.$add({ 
        $scope.phone : { 
        username: $scope.username, 
        email: $scope.email, 
        dob: $scope.dob 
        } 
        }); 

我將一些數據插入到Firebase數據庫中,但丟失了屬性ID。我看着以下問題:angular js - missing : after property id語法錯誤:丟失:屬性ID後

但在我的情況下,手機需要是關鍵。那麼,我該如何爲我的情況製作一個對象呢?

+0

你不能有'$ scope.phone'爲重點的名字 – 2014-09-05 12:09:30

+0

@ codename-:是, 您可以。但他們可能不想。 – 2014-09-05 12:11:24

+0

@ T.J.Crowder:我的意思是你不能寫他的方式。我把你的答案作爲一個字符串,而不是變量 - 有兩個不同的東西。 – 2014-09-05 12:40:34

回答

1

您不能在對象字面量中使用值作爲屬性名稱。

您需要先創建對象,並用括號的語法使用值設置屬性:

var msg = {}; 
msg[$scope.phone] = { 
    username: $scope.username, 
    email: $scope.email, 
    dob: $scope.dob 
}; 
$scope.messages.$add(msg); 
1

$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"])。在後一種情況下,字符串可以是任何表達式的結果,包括變量引用。

+0

看到這個例子: usersRef.set({ alanisawesome:{ DATE_OF_BIRTH: 「1912年6月23日,」 FULL_NAME: 「阿蘭·圖靈」 } 而不是alaniawesome我想有手機作​​爲我的鑰匙 – rishiag 2014-09-05 12:11:58

+0

@ rishiag:啊,這是不同的,我已經加入了答案。 – 2014-09-05 12:14:30