0

У меня есть пример json, как показано ниже, и я пытаюсь представить ключ в метке и значении в textarea (Plunker). Но текстовое поле не работает, если модель содержит «\ n». Всякий раз, когда есть \ n, я бы хотел, чтобы текст появлялся в новой строке.модель angularjs textarea с n должна начинаться с новой строки

$scope.sampleData = { 
    "id": 10000, 
    "transactionid": "gec43434", 
    "status": "COMPLETED", 
    "session_id": "TTYUU455667", 
    "errors": "1", 
    "start_timestamp": "2016-11-07 02:35:35", 
    "log_field": "\n\nSample Text\nRowX\n\nRowY\nRowZ\n" 
    } 

В текстовое поле, я хочу значение «log_field», чтобы быть появился как:

Sample Text 
RowX 
RowY 
RowZ 

Даже если Есть несколько \ п \ п ... должен быть только один разрыв строки.

+0

Textarea, кажется, работает, вам нужно прокрутить вниз в текстовом поле, чтобы увидеть значение в «log_field», так как оно начинается с 2 \ n. –

ответ

-1

Вы можете использовать следующие, чтобы удалить лишние символы новой строки:

"\n\nSample Text\nRowX\n\nRowY\nRowZ\n".replace(/\n\s*\n/g, '\n'); 

var text = "\n\nSample Text\nRowX\n\nRowY\nRowZ\n".replace(/\n\s*\n/g, '\n'); 
 
document.getElementById("foo").value = text;
<textarea id="foo"></textarea>

+0

это не будет работать с динамическими данными –

+0

@ VatsalJuneja, конечно, было бы. Я просто покажу, как это использовать OP. По-видимому, данные выборки, определенные им ОП, имеют формат, близкий к тому, который будет использоваться в API. После использования API он может обрабатывать данные, прежде чем определить его модель. – Christos

+0

Во-первых, OP не использует идентификаторы. Даже если мы предпочтем игнорировать это, на данный момент ваше решение также изменит значение в sampleData из-за двусторонней привязки данных угловых символов, что может и не потребоваться. Давайте даже предпочтем игнорировать это на данный момент, ваше решение не является СУХОЙ; это можно очень легко сделать с помощью фильтров, написание кода, для которого еще проще, чем показывает OP в плункере. –

-1

Попробуйте добавить следующий код:

$scope.sampleData.log_field = $scope.sampleData.log_field.replace(/\\n{1,}/g,'\\n'); 
+0

это не будет работать с динамическими данными –

0

Textarea, кажется, вы прокрутили вниз в log_field textarea, так как он начинается с 2 \ n?

Что касается вашего последнего запроса, вы должны создать настраиваемый фильтр, который может заменить несколько непрерывных строк новой строки одним символом новой строки. Это довольно легко и просто, но дайте мне знать, если вам нужно больше направлений.

Подробнее о фильтрах здесь: https://docs.angularjs.org/guide/filter. В нем также приводится пример создания настраиваемого фильтра.

+0

Да, вы правы. У вас есть решение для моего последнего запроса. –

+0

@MadasuK Вы можете написать для этого угловой пользовательский фильтр и использовать его прямо в HTML, где хотите. В основном они используются для форматирования данных для отображения. Подробнее здесь: https://docs.angularjs.org/guide/filter –

Смежные вопросы