在对象声明中获取未定义的错误

时间:2017-05-30 07:22:24

标签: javascript angularjs

以下是我的目标:

$scope.obj = {
        name: null,
        child: { name : name}
    };

<input type="text" ng-model="obj.name" />

所以我在这里尝试的是当我的obj.name属性中有最新值时,它应该自动反映在obj.child.name属性中。

我总是想使用更新的值,并且我只使用obj.child.name属性,所以稍后如果我忘了分配如下:

$scope.obj.child.name = $scope.obj.name

然后它将始终使用旧值,我不想在很多地方这样做,所以我希望这个过程自动化,就像名称$ scope.obj.name将被更新时,它应该自动更新$ scope.obj。 child.name

但是上面的代码我收到错误:名称未定义

为什么上述声明不可能以及如何实现?

2 个答案:

答案 0 :(得分:1)

您正在 name undefined ,因为JavaScript正在尝试在全局范围内查找name对象,并且可以找不到它,在这段代码中:

child: { name : name//undefined}

这是你如何定义它:

$scope.obj = {
   name: "Ay"
};
$scope.obj.child = {
  name: $scope.obj.name 
}

我们将在$scope.obj.name属性声明中引用child,以便正确绑定。

答案 1 :(得分:0)

你宣布错误:

$scope obj = {
  name: null,
  child: { name : name}
};

应该是

$scope.obj = {
  name: null,
  child: { name : name}
};