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