Установка значений вложенных объектов из контроллера AngularJS

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:""
    }
 }
Теги:
object

2 ответа

0
Лучший ответ

Вы не устанавливаете свойство experience в ветке по умолчанию. Таким образом obj.experience.something бросает, потому что experience не определен. Должен быть

$scope.obj = $scope.obj || {experience: {}}
  • 0
    Спасибо за ответ. Вышеуказанный набор experience как вложенный объект в obj ? Я всегда думал, что с помощью точечной нотации, например, obj.something.somethingElse это работает, когда я устанавливаю значения из obj.something.somethingElse интерфейса, например, так: <input type=text ng-model=obj.experience.field0> но не работает, когда я пытаюсь сделать то же самое с моего контроллера.
  • 0
    ng-model создаст всю вложенную структуру для вас. Демо Но у вас есть код, который может быть запущен до того, как контроллер модели сделает свое дело.
0

Вы можете установить свойство вложенного объекта примерно так:

obj.experience.field03 = "aa"; 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню