Я новичок в угловом и пытаюсь создать приложение для голосования. Сейчас у меня 4 поля ввода. 1 вопрос и 3 ответа на использование при создании нового опроса. У меня также есть кнопка, которая добавляет новое поле ввода, если вы хотите добавить еще один ответ. Я читаю, если я хочу динамически размещать контент в DOM, я должен использовать директиву. Я создал тот, который добавляет новый html-контент, который я хочу, также должен добавить атрибут ng-model, чтобы я мог получить доступ к содержимому, находящемуся в массиве, вместе с другим контентом. Ящики ввода, которые изначально были там, работают нормально, но когда я добавляю новый, он не получит к нему доступа.Динамически добавленная директива, но контент не отображается
Директива код/функция:
votingApp.directive('addAnswers', [function(){
return {
template:"<li><input type='text' ng-model='choices[3]' /></li>",
restrict: 'E'
}
}]);
Функция, которая бы добавить новую директиву в список полей ввода.
$scope.addAnswer = function(){
var node = document.createElement("LI");
var textnode = document.createElement("add-answers");
node.appendChild(textnode);
$scope.pollAnswers.appendChild(node);
};
И последнее, где его следует добавить в HTML.
<form ng-submit="createPoll()">
<p>Question</p>
<input type="text" ng-model="pollQuestion" />
<p>Answers</p>
<ul id="answers">
<li><input type="text" placeholder=" " ng-model="choices[0]" /></li>
<li><input type="text" placeholder=" " ng-model="choices[1]" /></li>
<li><input type="text" placeholder=" " ng-model="choices[2]" /> </li>
</ul>
<input id="create" type="submit" value="Create Poll" />
</form>
В принципе, как я добавить новый вход я собираюсь сделать нг-модель = длине массива. Однако, когда я делаю это, массив не получает слот больше при добавлении нового элемента.
Плунж показывает, что я означает также использование директивы.Мой ответ - это, по сути, только идея. – csschapker
Эй, плункер действительно помог. Я думаю, что у меня есть предполагаемая функциональность, которую я искал. Единственная запутанная часть - почему у нас есть выбор = «выбор» в элементе html, а также шаблон, область действия этой директивы. Мое предположение заключается в том, что атрибут в html позволяет нам свободно использовать массив выбора в наших li? –
nj51
Вы можете проверить документацию Angular для [директивы] (https://docs.angularjs.org/guide/directive). В нем объясняется, какой объем с точки зрения директив. В этом случае мы привязываем $ scope.choices (от контроллера) к значению области директив, также называемой выбором. 'choice: '='' говорит, что мы будем использовать привязку 2-way от родительской области к директиве. – csschapker