Странное поведение в моделировании AngularJS

0

Я использую функцию 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, или я просто делаю что-то неправильно. Учитывая, что ввод добавлен на страницу вручную, появляется значение. Я предполагаю, что там где-то есть ошибка.

Для пользователей, которые будут спрашивать "Ну, почему бы просто не вручную вводить поля ввода на странице" - это потому, что количество входов динамическое и изменяется в зависимости от количества представленных значений.

  • 0
    это выглядит как недостаток вашего общего дизайна. динамические входные данные не должны быть проблемой, если вы использовали ng-repeat вместо того, чтобы пытаться сохранить в тексте HTML-фрагмент, представляющий нужный вам шаблон. Угловой способ сделать это - организовать ваши данные в контроллере так, чтобы данные можно было повторять, а не генерировать.
  • 0
    в правильно спроектированном угловом приложении HTML будет отражением иерархии данных, а не композицией, казалось бы, не связанных между собой частей.
Теги:

3 ответа

0

Это в 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 и ввести его в свой модуль приложения.

0

Вы можете попробовать

ng-model="{{db[index-1].values[0][0].value}}"

Я новичок в Angular, но надеюсь, что это сработает!

  • 0
    Нет, но спасибо. Это связано с тем, что значения ng-bind-html не компилируются, я думаю. Я попробовал базовую директиву компиляции, но не повезло.
0

Хорошо, проблема в том, что angularjs не знает об этом элементе. Следовательно, этот элемент должен пройти фазу $ compile для определения углов, чтобы знать, что он имеет атрибут ngModel.

Ответ в этом сообщении должен помочь вам решить вашу проблему

Ещё вопросы

Сообщество Overcoder
Наверх
Меню