Я использую функцию ng-bind-html
для создания полей ввода для редактирования текста, хранящегося в базе данных в моем приложении. Я использую $sce
и позволяю unsafe-html, поскольку вход не будет отображаться без этого.
Сгенерированный HTML выглядит так:
<input class="edit-db"
ng-model="db[index-1].values[0][0].value"
type="text" placeholder="Enter your answer...">
Это создаст поле ввода, однако значение будет пустым. (а не значение db[index-1].values[0][0].value
Однако, если я скопирую сгенерированный HTML и поместил его в мое приложение вручную (без его создания с помощью ng-bind-html
), это значение появляется. Это говорит мне, что сгенерированный код не возникает.
Это ошибка с AngularJS
, или я просто делаю что-то неправильно. Учитывая, что ввод добавлен на страницу вручную, появляется значение. Я предполагаю, что там где-то есть ошибка.
Для пользователей, которые будут спрашивать "Ну, почему бы просто не вручную вводить поля ввода на странице" - это потому, что количество входов динамическое и изменяется в зависимости от количества представленных значений.
Это в ng-повторе?
Если это должно выглядеть примерно так.
<div ng-repeat= "item in items"> <input class="edit-db" ng-model="item.db[index-1].values[0][0].value" type="text" placeholder="Enter your answer..."> <div>'=
Вы должны сообщить ng-repeat, что это значение, связанное с этим элементом в массиве items, путем добавления элементов. перед вами переменная ng-model.
Также обязательно включите зависимость модуля ngSanitze. Вам нужно будет включить angular-sanitize.js и ввести его в свой модуль приложения.
Вы можете попробовать
ng-model="{{db[index-1].values[0][0].value}}"
Я новичок в Angular, но надеюсь, что это сработает!
ng-bind-html
не компилируются, я думаю. Я попробовал базовую директиву компиляции, но не повезло.
Хорошо, проблема в том, что angularjs не знает об этом элементе. Следовательно, этот элемент должен пройти фазу $ compile для определения углов, чтобы знать, что он имеет атрибут ngModel.
Ответ в этом сообщении должен помочь вам решить вашу проблему
ng-repeat
вместо того, чтобы пытаться сохранить в тексте HTML-фрагмент, представляющий нужный вам шаблон. Угловой способ сделать это - организовать ваши данные в контроллере так, чтобы данные можно было повторять, а не генерировать.