Угловое базовое выражение split - PullRequest
0 голосов
/ 02 октября 2018

У меня есть текстовая область, которая просматривает набранный текст.Затем я хочу посчитать строки, и новая строка определяется либо \ n, либо когда 32char ударил.

<code><textarea class="form-control" id="inputText1" rows="4" maxlength="64" ng-model="textBase"></textarea>
<pre>{{textBase}}
Строки после перерыва или 32char: {{(textBase? TextBase.split ("\ n").length: 0)}}

После этого он подсчитывает строки после каждого перерыва.Но как я могу добавить его после перерыва или после 32char?

1 Ответ

0 голосов
/ 02 октября 2018

Это очень сложно обработать с помощью встроенных выражений.

Я бы предложил использовать ng-change и передать вычисления на аутсорсинг функции контроллера.Я создал рабочую скрипку , чтобы решить эту проблему.Так как я не знал ваш правильный рабочий процесс (считая строку с 32 символами как одну или две строки ?, ...), вам нужно настроить этот пример в соответствии с вашими потребностями.

Вид:

<code><textarea class="form-control" id="inputText1" rows="4" maxlength="64" ng-model="textBase" ng-change="evaluateChange()"></textarea>
<pre>{{textBase}}
Строки после перерыва или 32 символа: {{rowAfterBreakOr32}}

Контроллер:

$scope.textBase = '';
$scope.rowsAfterBreakOr32 = 0;

$scope.evaluateChange = function() {
    // calc row break or 32chars
    var rowBreaks = $scope.textBase ? $scope.textBase.split("\n") : [$scope.textBase];
    $scope.rowsAfterBreakOr32 = rowBreaks.length;

    // iterate each row and count chars
    for(var i=0; i<rowBreaks.length; i++) {
      if(rowBreaks[i].length > 32) {
        $scope.rowsAfterBreakOr32 += rowBreaks[i].match(/.{1,32}/g).length;
      }
    }
};
...