数组中未定义ng-model属性

时间:2019-07-07 11:15:08

标签: javascript arrays angularjs object

我在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 个答案:

答案 0 :(得分:1)

因为您的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>

答案 1 :(得分:0)

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,
    ...
  }
}