Перебор массива объектов и отображение значений в текстовой области - PullRequest
0 голосов
/ 09 января 2019

Мне нужно перебрать массив объектов и отобразить значения в текстовой области. Ниже приведен код, который я пробовал до сих пор:

<body ng-controller="testCtrl">
<div class="container" ng-repeat="i in items">
    <div class="containerDescription">
        <textarea ng-model="i.name" 
          style="height:120px; width:200px;"></textarea><br>

    </div>

Значения отображаются в разных текстовых областях. Как отобразить значения в той же текстовой области? Прикрепленная ссылка на plunkr: http://plnkr.co/edit/DF2Na5vHd9SKu9MHQFvb?p=preview

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Если вы хотите воспользоваться преимуществами двусторонней привязки данных, чтобы пользователи, введенные вручную в textarea, появлялись в вашей модели, вы можете использовать директиву с пользовательскими $ formatter и $ parser (для соответствия вашей структуре данных):

angular.module('demo').directive('formatNames', function() {
  return {
    require: 'ngModel',
    link: function(scope, element, attr, ctrl) {
      ctrl.$formatters.push(function(users) {
          return users.map(function(user) {
            return user.name;
          }).join('\n')
      });
      ctrl.$parsers.push(function(users) {
          return users.split('\n').map(function(name, i) {
            return { id: i, name: name };
          });
      })
    }
  }
});

http://plnkr.co/edit/9zXCyOUYjiRuIwcFwypz?p=preview

0 голосов
/ 09 января 2019

Здесь вам не нужно повторять ng, вы можете объединить все элементы с помощью следующего и вызвать функцию

$scope.textAreaValues = function() {
    return $scope.items.map(function(elem) {
      return elem.name;
    }).join("\n");
 }

PLUNKER DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...