AngularJS привязывает данные к скомпилированному элементу

0

Я создаю элементы внутри цикла for, используя $compile и мне нужно привязать данные к ним.

for (var item in data) {
    var elem = $compile('<panel ng-model="item"></panel>')($scope)[0];
    container.append(elem);
}

Как я могу получить директиву панели для доступа к данным элемента? Мне нужно добавить элементы вручную, поэтому я не могу использовать ng-repeat.

  • 0
    Разве это не должно быть $scope.item = { someObject }; ?
  • 0
    @OmriAharon Может быть, но мой случай немного другой. Я изменил вопрос, чтобы вы могли понять, почему я не могу к этому.
Теги:

2 ответа

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

Я решил свою проблему следующим образом:

for (var index in data) {
    var elem = $compile('<panel data="data[' + index + ']"></panel>')($scope)[0];
    container.append(elem); // pseudocode line
}
0

Не делайте цикл и компилируйте для каждого элемента. Это будет плохая производительность для вашего приложения. Делать:

$scope.data = data;
var elem = $compile('<div ng-repeat="item in data"><panel ng-model="item"></panel></div>')($scope)[0];
container.append(elem);

Вы размещаете data в области $scope, потому что это происходит с привязкой. Обратите внимание: HTML, который вы пишете, скомпилирован против определенной $ scope.

Я думаю, что вы можете обойтись и без [0], но не уверен.

Ещё вопросы

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