Директива angularjs отличается от привязки к массиву

В то время как angular.forEach возвращает только последнее значение из personList. Как для каждого объекта в personList показать информацию с созданным directive?

I need exactly solution in forEach loop.

var app = angular.module('MyApp', [])

app.controller('MyController', function ($scope, $compile) {
        var personList = [
            { name: "John", age: "20" }, 
            { name: "Peter", age: "25" } 
        ];

        angular.forEach(personList, function(p, i) {
            $scope.person = { name: personList[i].name, age: personList[i].age };
            var personInfo = ($compile)('<person-info></person-info>')($scope);
            var body = document.querySelector("body")
            var parentDiv = document.createElement("div");


            body.append(parentDiv);
            parentDiv.append(personInfo[0]);
        });
    });

app.directive("personInfo", function () {
    return { template: '{{ person.name }} is {{person.age}} years old' }
});

В HTML:

Peter is 25 years old
Peter is 25 years old

хорошо, это совершенно неправильно, вам следует избегать таких манипуляций, во-первых, вы не должны добавлять элемент директивы, способ - добавлять вещи в модель не напрямую в DOM, во-вторых, этого не должно происходить в контроллере (ссылка - это место, где вы компилируете вещи )

Panos K 25.04.2018 19:17

Почему вы хотите сделать это в своем контроллере вместо использования ng-repeat с вашей директивой в разметке?

Lex 25.04.2018 19:25

@Lex мне нужно делать это динамически

hibace 25.04.2018 19:31

Вид будет динамически обновляться при изменении personList. Это довольно базовая часть фреймворка Angular, и, как уже указывалось, вы не должны выполнять манипуляции с DOM в контроллере.

Lex 25.04.2018 19:32

любой элемент, который вы создаете вручную, никогда не будет обрабатываться самим Angular. так что да, это определенно не то, что вам нужно.

skyboyer 25.04.2018 22:27
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
5
35
0

Другие вопросы по теме