Моя цель состоит в том, чтобы иметь директиву, которую я предоставляю, и она повторяет их X раз. Точно так же, как ng-repeat, только я хочу обернуть его в другие функции, такие как ограничение переключения и дополнительные элементы вне транскодированного содержимого.AngularJS transclude scope в директиве с ng-repeat
По какой-то причине переключение не имеет доступа к области выделения директивы независимо от того, что я пытаюсь.
Я использовал функцию transclude
внутри link
, в нескольких вариантах, безрезультатно. Вот демо:
И вот суть коды:
app.directive('repeatContents', function() {
return {
scope: {
items: '=repeatContents',
limit: '=repeatLimit'
},
transclude: true,
template: '<div ng-repeat="item in items">' +
'<em>Outside transclude: {{item}}</em><br />' +
'<ng-transclude></ng-transclude>' +
'</div>',
link: function(scope, el, attrs, ctrl, transclude) {
transclude(scope, function(clone, scope) {
el.append(clone);
});
}
}
});
Если вы посмотрите на plunkr, вы увидите, что за пределами включения {{item}}
доступно, но не внутри. Независимо от содержимого функции link
, которые должны были позаботиться об этом. Любая идея, что я могу сделать?
я не мог получить то, что вы собираетесь работать ... но в качестве альтернативы, я заставить его работать без transclude, просто поместив другую директиву в шаблон ... Вот plunkr в случае, если это полезно вообще https://plnkr.co/edit/v7oFnukZxHMEi3xasFmc?p=preview – tarrball
Это нормально, если у меня только один случай использования , но в моих целях мне придется сделать копию этой директивы для каждого случая использования, которое побеждает цель директивы. – casraf