Итак, я пытаюсь создать директиву, содержащую ng-include. директива в настоящее время выглядит следующим образом:Директивы, шаблоны и ng-include AngularJS
.directive('kdTest', function() {
return {
restrict: 'A',
scope: {
kit: '=kdTest',
garment: '=kdGarment'
},
template: '<div></div>',
link: function (scope, element, attrs) {
console.log(scope.kit);
console.log(scope.garment);
}
}
});
, что я хочу сделать, это изменить шаблон, чтобы выглядеть следующим образом:
.directive('kdTest', function() {
return {
restrict: 'A',
scope: {
kit: '=kdTest',
garment: '=kdGarment'
},
template: '<div ng-include="'/assets/garments/' + garment.slug + '.svg'"></div>',
link: function (scope, element, attrs) {
console.log(scope.kit);
console.log(scope.garment);
}
}
});
, но как вы можете видеть, одиночные кавычки собираются вызвать мне проблемы. Может кто-нибудь помочь мне исправить это?
Кроме того, мне нужно иметь доступ к элементу svg внутри директивы.
Update 1
Итак, я изменил свою директиву следующим образом:
.directive('kdTest', function() {
var colours,
design,
garment;
// Function to show our selected design
var showDesign = function (element) {
// Get our image
var svg = element.find('svg');
console.log(svg.length);
// If we have an image
if (svg.length) {
///-- removed for brevity --//
}
};
return {
restrict: 'A',
scope: {
kit: '=kdTest',
garment: '=kdGarment'
},
template: '<div ng-include="svgPath"></div>',
link: function (scope, element, attrs) {
// Attach our scope to our global variables
colours = scope.colours;
design = scope.design;
garment = scope.garment;
// Create our svgPath
scope.svgPath = 'assets/garments/' + scope.garment.slug + '.svg';
// Show our selected design
showDesign(element);
}
}
});
Таким образом, в моей функции showDesign console.log (svg.length) возвращает 0. Как могу ли я получить его, чтобы на самом деле увидеть svg?
Я знал, что бит был прост, вы ответили на мой первый вопрос. Можете ли вы ответить на второй? Я обновил свой вопрос. – r3plica
@ r3plica: Я добавил вариант сделать это. – Cerbrus
Не должно быть 'templateUrl:" some/html/file.html "' вместо 'template:" some/html/file.html "'? – alex