#html #knockout.js #data-binding #textarea #newline
#HTML #knockout.js #привязка данных #текстовая область #новая строка
Вопрос:
Ниже приведен мой код для текстовой области.
<div>
<textarea data-bind="value: environment" rows="10" cols="20" class="form-group"></textarea>
</div>
Я хочу отобразить содержимое, введенное в этой текстовой области, в другом DIV.
Ниже приведен код для отображения содержимого текстовой области.
<div data-bind="text: environment"/>
Этот div отображается так, как показано на рисунке ниже.
Проблема: новая строка не фиксируется, когда я отображаю содержимое в другом div.
Что все, что я пробовал?Я попробовал ниже способы узнать, будет ли новая строка / n отображаться как есть, из текстовой области. Но, не повезло!
<div data-bind="html: environment"/>
<div data-bind="value: environment"/>
Пожалуйста, предложите, если кто-нибудь сталкивался с такими проблемами.
Спасибо!
Ответ №1:
Добавьте правило css white-space: pre-wrap
в свой div:
var viewModel = {
environment: ko.observable("initial text")
}
ko.applyBindings(viewModel);
div {
white-space: pre-wrap;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div>Change text and click outside textarea in order to update value.</div>
<textarea data-bind="value: environment" rows="10" cols="20" class="form-group"></textarea>
<div>Entered text:</div>
<div data-bind="html: environment()"></div>
Ответ №2:
Это немного грязновато, но… Вы можете заменить ‘n’ на » для отображения div:
var viewModel = {
environment: ko.observable("initial text")
}
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div>Change text and click outside textarea in order to update value.</div>
<textarea data-bind="value: environment" rows="10" cols="20" class="form-group"></textarea>
<div>Entered text:</div>
<div data-bind="html: environment().replace('n', '</br>')"></div>