2016-01-21 5 views
2

У меня есть форму в AngularJS. В форме у меня есть поле с именем «description». Если пользователь вводит описание как:Новый выпуск строки в angularjs

"Это описание:

1) пункт 1

2) пункт 2"

Я спасаю это как:

"This is description:<br/>1)point 1 <br/> 2)point 2" 

Теперь, сохранив его, чтобы показать его на странице, я использую что-то вроде:

<span class="summary"><em ng-bind-html="(x.DES)"></em></span> 

Этот код работает.

Если пользователь нажимает на записи, то я загружающая форму в режиме редактирования:

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

<textarea ng-focus="onFocusDescrption()" maxlength="600" name="cepDes" class="form-control" rows="3" cols="16" ng-model="description" ng-disabled="isDescDisable" placeholder="Enter a description ..." id="description"></textarea> 

Теперь проблема приходит сюда. В контроллере я устанавливаю значение модели как:

$scope.description = $scope.timeEntry.DES; 

Где в $ scope.timeEntry.DES оказывает значение, которое сохраняется. Значение отображается в textarea, имеющем
.

Пожалуйста, помогите мне.

+0

Похоже у вас есть и нг-модель = «описание» и нг-связывать-HTML = "(описание)". Вам нужно только ng-bind-html, а не ng-model. Кроме того, в вашем примере отсутствует n, в ng-bind-html. –

+0

да, вы правы. –

+0

Да, я использую ng-model в режиме редактирования. Я редактирую то же самое –

ответ

0

Невозможно использовать разметку в текстовом поле, как вы можете видеть в этом plunkr. Я создал и больше информации в этом post. Решением было бы использовать директиву, которая допускает редактируемый контент. Таким образом, вы можете использовать DIV для отображения и редактирования:

<div ng-bind-html="modelname" 
     contenteditable="true" 
     ng-model="modelname"> 
</div> 

Директива (также on github):

app.directive("contenteditable", function() { 
    return { 
    restrict: "A", 
    require: "ngModel", 
    link: function(scope, element, attrs, ngModel) { 

     function read() { 
     ngModel.$setViewValue(element.html()); 
     } 

     ngModel.$render = function() { 
     element.html(ngModel.$viewValue || ""); 
     }; 

     element.bind("blur keyup change", function() { 
     scope.$apply(read); 
     }); 
    } 
    }; 
}); 
+0

Спасибо за код, который вы указали выше. Да, он работает. Используя div вместо textarea. –

+0

В plunkr, если я использую: $ scope.ngModelVar = "Это описание: \ n1) точка 1 \ n 2) точка 2"; $ scope.ngBindHtmlVar = "Это описание: \ n1) точка 1 \ n 2) точка 2"; Тогда он работает. –

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