Как я могу изменить элемент, связанный с вызовом transclude()
?
В моем приложении я динамически загружаю весь SVG-файл с сервера и отображаю его. Мне нужно добавить поведение к загруженному контенту.
В настоящее время у меня есть что-то вроде этого:
<div svg-canvas="urlToSVGContent"></div>
Это загружает тег SVG внутри div. Это прекрасно работает, но что, если я хочу добавить ng-щелчок к каждому <path>
, <circle>
и т. д.? ng-click
уже работает с путями svg из коробки, это просто вопрос ссылки на элемент.
Я уже могу сделать директиву с помощью transclude, которая будет выполняться один раз для каждого пути:
<div svg-canvas="urlToSVGContent">
<svg-each-path>
<!-- call transclude once per path found -->
</svg-each-path>
</div>
Но внутри svg-each-path, хотя у меня есть отдельная область видимости для каждого элемента, параметр el
директивы не имеет смысла. Или он все еще указывает на родительский div или что-то в этом роде.
Я хотел бы сделать это:
<div svg-canvas="urlToSVGContent">
<svg-each-path ng-click="onPathClick()">
</svg-each-path>
</div>
Вот как svg-each-path
выглядит сейчас:
function svgEachPath() {
return {
restrict: 'E',
transclude: 'element',
priority: 1000,
terminal: true,
link: link,
}
function link(scope, el, attrs, ctrl, $transclude) {
// scope.paths was set by the svg-canvas directive
scope.paths.forEach(function(path) {
var childScope = <InnerScope> scope.$new()
childScope.path = path
// how can I change "el" to point to path?
// or get the clone to be a clone of the path instead of the parent element?
$transclude(childScope, function(clone) {
})
})
}
}
replace: true
? (при условии, что шаблон имеет один корневой элемент). таким образомel
будет указывать на фактический элемент пути в каждой области. - person Eliran Malka   schedule 10.02.2014<path>
. Я не могу предсказать пути, которые будут в контенте. - person Sean Clark Hess   schedule 10.02.2014svg-each-path
был прокси-тегом для реальныхpath
тегов, найденных в контенте. - person Sean Clark Hess   schedule 10.02.2014svg-each-path
, вы получите ссылку на элементpath
в функциях связывания/компиляции. - person Eliran Malka   schedule 10.02.2014