Javascript 获取对象声明中的未定义错误
以下是我的目标:Javascript 获取对象声明中的未定义错误,javascript,angularjs,Javascript,Angularjs,以下是我的目标: $scope.obj = { name: null, child: { name : name} }; <input type="text" ng-model="obj.name" /> 然后它将始终使用旧值,我不想在这么多地方这样做。所以我希望这个过程自动化,就像更新name$scope.obj.name一样;它应该自动更新$scope.obj.child.name 但是使用上面的
$scope.obj = {
name: null,
child: { name : name}
};
<input type="text" ng-model="obj.name" />
然后它将始终使用旧值,我不想在这么多地方这样做。所以我希望这个过程自动化,就像更新name$scope.obj.name一样;它应该自动更新$scope.obj.child.name
但是使用上面的代码,我得到了一个错误:名称未定义
为什么上述声明不可行,以及如何实现这一点?您将obj声明为错误:
$scope obj = {
name: null,
child: { name : name}
};
应该是
$scope.obj = {
name: null,
child: { name : name}
};
您得到的名称
是未定义的
,因为JavaScript试图在全局范围内查找名称
对象,但在以下代码中找不到该对象:
child: { name : name//undefined}
您可以这样定义它:
$scope.obj = {
name: "Ay"
};
$scope.obj.child = {
name: $scope.obj.name
}
我们将在这里的
子属性声明中引用$scope.obj.name
,因此它是正确绑定的。这不起作用,因为给定上下文中没有name
变量。您可以创建一个函数并从中返回name
的值<代码>子:函数(){返回this.name;}
@Tushar您能否以回答的形式提供更多细节,如解释和如何使用它。please@Tushar但是如果我按照你的建议:$scope.obj.child.name??很抱歉,这是一个打字错误。我已经更新了我的问题,但问题仍然是sameOk对你的努力投了赞成票为了帮助我,但我可以有这样的东西:child:function(){return this.name;}如果你能看到@Tushar在上面的评论中提到的内容,你也可以这样写$scope.obj={name:null,child:{name:$scope.obj.name}@学习Yes您可以这样定义它$scope.obj={name:“Ay”,child:function(){returnthis.name;}
但您不会有子.name
属性,它将只是一个函数,返回$scope.obj
@HamikHambardzumyan的名称
。不,您不能,它将引发一个错误:无法读取未定义的属性“name”
。是的,如果您遵循子:函数(){return this.name;}
建议,您将无法获取$scope.obj.child.name
,因为child
只是一个函数。
$scope.obj = {
name: "Ay"
};
$scope.obj.child = {
name: $scope.obj.name
}