私は次のコントローラーを持っています。これは、起動時にサーバーにアイテムのリストを照会し、すべてのアイテムの基本的な詳細を取得します。次に、ユーザーがリストからアイテムをクリックすると、サーバーにクエリを実行して、一部の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更新の前後)。