Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法设置子对象的未定义属性_Javascript_Angularjs - Fatal编程技术网

Javascript 无法设置子对象的未定义属性

Javascript 无法设置子对象的未定义属性,javascript,angularjs,Javascript,Angularjs,当我尝试为父对象物理的子对象addressline_1赋值时,我得到一个“无法设置未定义的addressline_1属性”。如果有人能告诉我如何解决此问题,我将不胜感激。谢谢 $scope.editCompany = function(){ $scope.submitCompany =[{phone:[]}]; $scope.submitCompany[0].name = "Some Company"; $scope.submitCompany[0].email = "compan

当我尝试为父对象物理的子对象addressline_1赋值时,我得到一个“无法设置未定义的addressline_1属性”。如果有人能告诉我如何解决此问题,我将不胜感激。谢谢

$scope.editCompany = function(){
  $scope.submitCompany =[{phone:[]}]; 
  $scope.submitCompany[0].name = "Some Company";
  $scope.submitCompany[0].email = "company@example.com";
  $scope.submitCompany[0].is_active = "TRUE";
  $scope.submitCompany[0].physical.addressline_1 = "77 Example rd";
}
我也尝试过以下方法,但没有成功

$scope.editCompany = function(){
  $scope.submitCompany =[{phone:[]},{physical:{addressline_1:"",addressline_2:"",addressline_3:"",addressline_4:"",city:"", region:"",country:"", post_code:""}}]; 
  $scope.submitCompany[0].name = "Some Company";
  $scope.submitCompany[0].email = "company@example.com";
  $scope.submitCompany[0].is_active = "TRUE";
  $scope.submitCompany[0].physical.addressline_1 = "77 Example rd";
}

在尝试设置对象的属性之前,需要先创建物理对象:

$scope.editCompany = function(){
  $scope.submitCompany =[{phone:[]}]; 
  $scope.submitCompany[0].name = "Some Company";
  $scope.submitCompany[0].email = "company@example.com";
  $scope.submitCompany[0].is_active = "TRUE";
  $scope.submitCompany[0].physical = {};
  $scope.submitCompany[0].physical.addressline_1 = "77 Example rd";
};
或相同的更清晰语法:

$scope.editCompany = function () {
    $scope.submitCompany = [{
        phone: [],
        name: "Some Company",
        email: "company@example.com",
        is_active: "TRUE",
        physical: {
            addressline_1: "77 Example rd"
        }
    }];
};

在设置属性之前,将对象分配给
物理
属性是正确的,但您将其放在
$scope.submitCompany[1]。物理
而不是
$scope.submitCompany[0]。物理

物理
属性与
电话
属性放在同一对象中:

$scope.editCompany = function(){
  $scope.submitCompany = [ { phone: [], physical: {} } ]; 
  $scope.submitCompany[0].name = "Some Company";
  $scope.submitCompany[0].email = "company@example.com";
  $scope.submitCompany[0].is_active = "TRUE";
  $scope.submitCompany[0].physical.addressline_1 = "77 Example rd";
}
只要找点零钱就行了

$scope.editCompany = function(){
  $scope.submitCompany =[{phone:[]},{physical:{addressline_1:"",addressline_2:"",addressline_3:"",addressline_4:"",city:"", region:"",country:"", post_code:""}}]; 
 ....
  $scope.submitCompany[1].physical.addressline_1 = "77 Example rd"; // instead $scope.submitCompany[0].physical.addressline_1
}