2016-07-22 55 views
0

我想从我的角度控制器设置的嵌套对象的价值,但我不断收到以下错误:设置嵌套对象的值

Cannot read property 'field0' of undefined 

在我的控制器中的代码是:

$scope.obj = $scope.obj || {}; 

$scope.autosave = function(){ 
    $window.sessionStorage.setItem("experienceOne", $scope.obj.experience.field0); 
} 

任何想法我做错了什么?我确定它的东西很小,但我似乎无法弄清楚。我如何设置嵌套对象中的值。仅供参考,对象结构是这样的:

obj{ 
    name:"", 
    experience:{ 
     field0:"", 
     field1:"", 
     field2:"" 
    } 
} 

回答

0

你不设置默认分支experience财产。所以obj.experience.something抛出,因为experience是未定义的。它应该是

$scope.obj = $scope.obj || {experience: {}} 
+0

谢谢你的答案。上述是否将'experience'设置为'obj'中的嵌套对象?我一直认为通过使用像这样的'obj.something.somethingElse'这样的点符号,当我像前面那样设置值时,''input type = text ng-model = obj.experience.field0>'但没有当我尝试从我的控制器做同样的工作时。 – Skywalker

+0

'ng-model'会为你创建所有的嵌套结构。 [Demo](http://plnkr.co/edit/SybR2RAEpdpiRy9cpLba?p=preview)但是你有一个可以在模型控制器发挥其魔力之前运行的代码。 –

0

您可以设置嵌套对象的属性像这样的东西:

obj.experience.field03 = "aa";