我在svg(using ng-switch
)中绘制了几个元素并处理它们上的鼠标事件.控制器看起来像这样(有更多类型的元素和更多鼠标事件要处理):
app.controller('MainCtrl', function($scope) { $scope.elements = [ { "type": "circle", "x" : 100, "y" : 200 }, { "type" : "rect", "x" : 50, "y" : 20 } ]; $scope.mousedown = function(element, $event) { $scope.msg = element.type; }; });
在鼠标事件处理程序中,我需要鼠标事件的目标模型.我目前的解决方案是添加ng-mousedown="mousedown(element, $event)"
到每个svg元素,这对于越来越多的元素类型来说很烦人.
有没有办法ng-mousedown
只添加到根svg元素并从$event
属性中检索单击元素的模型($event.target
或者$event.srcElement
给我单击的svg元素,如何从中获取模型?).
完整示例:http: //plnkr.co/edit/nfgVSBBaeJ9EFKNjYEJn
是的,您可以使用angular.element(...).scope().p
如下:
标记:
<svg xmlns="http://www.w3.org/2000/svg" ng-mousedown="mousedown2($event)">
JS:
$scope.mousedown2 = function($event) { console.log(angular.element($event.target).scope().p); });
请参见forked plunk:http://plnkr.co/edit/7lGMphla42Chrg3X2NZl