Добавление динамических радиокнопок в угловых

0

Я работаю в Angular с простой старой JS-функцией, которая возвращает список данных из API. Затем я поворачиваю данные в переключатели следующим образом:

function parseRoles(jsonObj) {
        console.log("passed: " + jsonObj);
        var tempRoleArray = [];
        for (var i = 0; i < jsonObj.role.length; i++) {
          tempRoleArray.push("<input type='radio' ng-model='user.role' value='" + jsonObj.role[i].role + "'>" + jsonObj.role[i].description + "&nbsp;");       
        }
        $("#userRoleEntry").html(tempRoleArray);
      }

Отлично работает со стороны JS, но затем угловая сторона не распознает "user.role" или "$ scope.user.role" с "неопределенными" ошибками для каждого. Это потому, что этот вход немного отличается от частичного? Что-то другое? Кажется, есть некоторые вопросы, намекающие на Angular, которые не очень хорошо делают такие вещи... EDIT: Это не единственный вход в форму. Остальные из них были собраны или возвращены из API. Поэтому я не уверен, что я могу скомпилировать его с учетом видимости, и, похоже, это ответ на излишний вопрос. Конечно, я ошибаюсь.

Теги:

2 ответа

1
Лучший ответ

woou, я бы лучше изменил API, вместо того, чтобы добавлять $compile в JS-код!

API должен возвращать jsonObj и вы можете легко создать свой View в Angular.

Также не Угловой способ сделать что-то вроде этого:

$("#userRoleEntry").html(tempRoleArray);

Я предполагаю, что ваш JSON выглядит так: массив с объектами.

$scope.roles = [{role: 'test', description: 'text'}]; // your "jsonObj.role"

Затем ваш HTML должен выглядеть так:

<div ng-repeat="obj in roles">
  <input type="radio" ng-model="user.role" ng-value="obj.role"> {{obj.description}}
</div>
  • 0
    API возвращает объект JSON в моем исходном сообщении как jsonObj. И вы правы, это способ делать вещи с помощью jQuery, а не Angular.
  • 0
    Мой способ сказать, улучшение было бы здорово!
Показать ещё 4 комментария
0

Вам необходимо скомпоновать элемент DOM, чтобы получить его угловое соединение.

См. Doc для примеров: https://docs.angularjs.org/api/ng/service/$compile

Как указывает @pankajparkar, вы можете сделать $compile($("#userRoleEntry"))($scope) для компиляции вашего элемента.

  • 0
    Извините, я понимаю, к чему вы клоните, но я думаю, что вы неправильно поняли мой вопрос. Однако, спасибо!

Ещё вопросы

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