Я создаю элементы внутри цикла for, используя $compile
и мне нужно привязать данные к ним.
for (var item in data) {
var elem = $compile('<panel ng-model="item"></panel>')($scope)[0];
container.append(elem);
}
Как я могу получить директиву панели для доступа к данным элемента? Мне нужно добавить элементы вручную, поэтому я не могу использовать ng-repeat
.
Я решил свою проблему следующим образом:
for (var index in data) {
var elem = $compile('<panel data="data[' + index + ']"></panel>')($scope)[0];
container.append(elem); // pseudocode line
}
Не делайте цикл и компилируйте для каждого элемента. Это будет плохая производительность для вашего приложения. Делать:
$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]
, но не уверен.
$scope.item = { someObject };
?