语法错误:缺少:属性id之后

时间:2014-09-05 12:07:52

标签: javascript angularjs

$scope.messages.$add({
                    $scope.phone : {
                    username: $scope.username,
                    email: $scope.email,
                    dob: $scope.dob
                    }
                  });

我正在将一些数据插入到Firebase数据库中但是会丢失属性ID。我查看了以下问题:angular js - missing : after property id

但在我的情况下,手机需要成为关键。那么如何为我的案例制作一个对象?

2 个答案:

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