свойство ng-model не определено в массиве - PullRequest
1 голос
/ 07 июля 2019

У меня есть текстовые с ng-model="award.questions.propertyName".Мне нужно поместить эти входные значения в массив с такой структурой:

questions: [{
 key: value,
 key: value,
 ...
}] 

, но console.log возвращает эти значения как неопределенные, когда я отправляю свою форму.Когда я определил вопросы как объект {}, он работает как шарм, и все значения хороши, но когда я включаю его в массив, ничего не работает.

Вид

<textarea name="short-Description" ng-model="award.questions.shortDescription"></textarea>
<textarea name="consumer" ng-model="award.questions.consumer"></textarea>
<textarea name="advantages" ng-model="award.questions.advantages"></textarea>

Контроллер

$scope.award = {
  questions: [{
    shortDescription: $scope.shortDescription,
    consumer: $scope.consumer,
    advantages: $scope.advantages,
  }],
};

$scope.onSubmit = (award, awardForm) => {
  $scope.data = angular.copy(award);
  console.log($scope.data);
}

Ответы [ 2 ]

1 голос
/ 07 июля 2019

Поскольку ваша переменная award не имеет свойства question.

Вы должны изменить свой код на:

<textarea name="short-Description" ng-model="award.questions[0].shortDescription"></textarea>
<textarea name="consumer" ng-model="award.questions[0].consumer"></textarea>
<textarea name="advantages" ng-model="award.questions[0].advantages"></textarea>

Или на ng-repeat, если у вас есть несколько вопросов:

<div ng-repeat="question in award.questions track by $index">
  <textarea name="short-Description" ng-model="question.shortDescription"></textarea>
  <textarea name="consumer" ng-model="question.consumer"></textarea>
  <textarea name="advantages" ng-model="question.advantages"></textarea>
</div>
0 голосов
/ 07 июля 2019

award.questions - это массив - поэтому у него нет свойства с именем consumer или каких-либо других ваших переменных (обратите внимание, что questions не question). Используйте [0], чтобы получить первый элемент в массиве.

<textarea name="short-Description" ng-model="award.questions[0].shortDescription"></textarea>

Однако в таком формате проще использовать один объект. Вид:

<textarea name="short-Description" ng-model="award.question.shortDescription"></textarea>

Контроллер:

$scope.award = {
  questions: {
    key: value,
    ...
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...