我有以下控制器,它在启动时查询服务器以获取项目列表,该列表获取所有项目的基本详细信息。然后,当用户单击列表中的某个项目时,它会查询服务器以返回所有项目信息,包括一些 SVG 数据。
function ItemsCtrl($scope, $http) {
$scope.items = [];
$scope.selectedItemDesign = null;
$http.jsonp('/items/all?callback=JSON_CALLBACK').
success(function (data) {
$scope.items = data;
});
$scope.getItem = function (item) {
var index = $scope.items.indexOf(item);
if (!$scope.items[index].SVG) {
$http.jsonp('/items/byid/' + $scope.items[index]._id + '?callback=JSON_CALLBACK').
success(function (data) {
$scope.items[index].SVG = data.SVG;
$scope.selectedItemDesign = $scope.items[index].SVG;
});
} else {
$scope.selectedItemDesign = $scope.items[index].SVG;
}
};
}
然后通过以下方式将 SVG 数据直接绑定到视图:
<div class="span9" ng-bind-html-unsafe="selectedItemDesign">
我遇到的问题是我希望能够将事件附加到 SVG 中的标签,以便允许用户与 SVG(简单onClick
事件)进行交互,但我不知道如何做到这一点......
我以为是后行;$scope.selectedItem = $scope.items[index];
然后我就可以访问 DOM 并附加事件,但事实并非如此(DOM 尚未更新)。我也查看了有关指令的信息,虽然我设法设置了一个指令来执行我需要的操作,但它在 SVG 更改时不会触发(即使这样我也不确定它是否是前/后 DOM 更新)。