【问题标题】:Setting Nested Object Values from AngularJS Controller从 AngularJS 控制器设置嵌套对象值
【发布时间】:2016-07-22 09:36:44
【问题描述】:

我正在尝试从我的 Angular 控制器中设置嵌套对象的值,但我不断收到以下错误:

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:""
    }
 }

【问题讨论】:

    标签: javascript angularjs object


    【解决方案1】:

    您没有在默认分支中设置 experience 属性。所以obj.experience.something 抛出,因为experience 是未定义的。应该是

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

    【讨论】:

    • 感谢您的回答。以上是否将experience 设置为obj 中的嵌套对象?我一直认为像obj.something.somethingElse 这样使用点表示法,当我像<input type=text ng-model=obj.experience.field0> 这样从前端设置值时,它可以工作,但当我尝试从控制器执行相同操作时不起作用。
    • ng-model 将为您创建所有嵌套结构。 Demo 但是你有一段代码可能会在模型控制器发挥它的魔力之前运行。
    【解决方案2】:

    您可以使用以下方式设置嵌套对象的属性:

    obj.experience.field03 = "aa"; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多