2014-09-05 3 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

당신은 키 이름 –

+0

으로 $의 scope.phone' codename- @'가질 수 없습니다 : 예 , 할 수 있습니다. 그러나 그들은 아마 원하지 않을 것입니다. –

+0

@ T.J.Crowder : 나는 그가 당신이 그것을 쓰는 방법으로 가질 수 없다는 것을 의미합니다. 당신이 대답을 문자열이 아닌 변수로 두었습니다. 두 가지가 있습니다. –

답변

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); 

속성 이름 외부 개체 이니셜 라이저의 액세스 할 때 자바 스크립트에서, 당신은 점 표기법과 문자 속성 이름을 사용할 수 있기 때문에 작동합니다 : 당신은 두 개의 문장에서 그것을해야 할 것이다 obj.foo) 또는 대괄호 표기법 및 문자열 속성 이름 (obj["foo"]). 후자의 경우 문자열은 변수 참조를 포함하여 모든 표현식의 결과 일 수 있습니다.

+0

이 예제 참조 : usersRef.set을 ({ alanisawesome : { date_of_birth "1912년 6월 23일" FULL_NAME : "앨런 튜링 (Alan Turing)" } 대신 내 열쇠로 전화를 갖고 싶어 alaniawesome의 – rishiag

+0

@rishiag : 아, 그 점이 다릅니다. 답을 추가했습니다. –

관련 문제