我正在构建一个角度组件并跟随https://medium.com/@tweededbadger/tutorial-dynamic-data-driven-svg-map-with-angularjs-b112fdec421d#.d413i8wiy,因为它正在完成我正在尝试做的事情。他们有以下指令:
angular.module('SvgMapApp').directive('svgMap', ['$compile', function ($compile) {
return {
restrict: 'A',
templateUrl: 'img/Blank_US_Map.svg',
link: function (scope, element, attrs) {
var regions = element[0].querySelectorAll('.state');
angular.forEach(regions, function (path, key) {
var regionElement = angular.element(path);
regionElement.attr("region", "");
$compile(regionElement)(scope);
})
}
}
}]);
angular.module('SvgMapApp').directive('region', ['$compile', function ($compile) {
return {
restrict: 'A',
scope: true,
link: function (scope, element, attrs) {
scope.elementId = element.attr("id");
scope.regionClick = function () {
alert(scope.elementId);
};
element.attr("ng-click", "regionClick()");
element.removeAttr("region");
$compile(element)(scope);
}
}
}]);
我正在构建的应用程序使用角度1.5.5,es6和组件模型。这是我第一次使用“组件”驱动角度并努力将'region'指令转换为组件。我已成功将'svgMap'指令转换为组件,只是遇到了'region'指令的问题。
答案 0 :(得分:2)
为了回答这个问题,首先我将给出差异b / w指令&组件。
组件不是指令的替代品。它是指令的一个子集。 当指令有以下两件事时,它将成为一个组件
由于你的“region”指令有一些DOM操作。它违反了组件的基本质量。所以它无法转换