所以我想創建一個指令,其中包含一個ng-include。 該指令目前看起來是這樣的:AngularJS指令,模板和ng-include
.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);
}
}
});
但你可以看到,單引號會導致我的問題。 有人可以幫我解決這個問題嗎?
此外,我需要能夠從指令中訪問元素。
更新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