angular рассматривает пробел как ноль с ng-параметрами - PullRequest
0 голосов
/ 01 апреля 2019

В контроллере у меня есть такой массив

    'Pipe': '|',
    'Comma': ',',
    'Tab': '\t'
  };

и в ng-options, я использую его вот так

<select 
    ng-model="csv.delimiter"
    ng-options="value as key for (key, value) in delimiters">
</select>

Когда я печатаю значение csv.delimiter, оно показывает правильное значение для трубы и запятой, а для табуляции - ноль. Он показывает ноль для пробела и других escape-символов. Пожалуйста, помогите

Я ожидаю ненулевое значение для табуляции, пробела или любого другого escape-символа

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Вы можете добавить дополнительные "\" перед escape-символами. Например, для вкладки используйте \ \ t

0 голосов
/ 01 апреля 2019

Я не вижу поведения, которое вы описываете. Вкладка является допустимым выбором, и модель соответствующим образом установлена ​​на символ табуляции. Смотрите демо ниже.

angular.module('myApp', [])
.controller('MainController', function ($scope) {
  $scope.delimiters = {
    Pipe: '|',
    Comma: ',',
    Tab: '\t'
  };
  
  var arr = ['foo', 'bar', 'baz'];
  
  $scope.setData = function (delimiter) {
    // For demo purposes. This is not spec to delimit
    // data by a character.
    $scope.data = arr.join(delimiter);
  };
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp" ng-controller="MainController">
  <select 
      ng-model="csv.delimiter"
      ng-options="value as key for (key, value) in delimiters"
      ng-change="setData(csv.delimiter)">
  </select>
  <br />
  {{csv.delimiter}}
  <br />
  Is Pipe: {{csv.delimiter===delimiters.Pipe}}
  <br />
  Is Comma: {{csv.delimiter===delimiters.Comma}}
  <br />
  Is Tab: {{csv.delimiter===delimiters.Tab}}
  <br />
  <textarea ng-model="data">
  
  </textarea>
</div>
...