KineticJSを使用してスコープ内の値に基づいてキャンバスに描画するカスタムAngularディレクティブを作成しようとしています。JSON応答を受信する$http呼び出しに基づいてスコープを更新するサービスを作成するつもりです。その時点で、ディレクティブがスコープ内の値をループし、各値の動的ノードを作成するようにします。
ただし、これをコントローラー内で行うべきか、ディレクティブのリンク関数内で行うべきかはわかりません。リンク関数内で更新を行う場合、scope。$ watchまたは他の何かを実行しますか?
次のようなカスタムディレクティブを作成しました。
angular.module('history.directives', [])
.directive('kinetic', function() {
var kineticContainer = '<div id="container"></div>';
return {
restrict: 'E',
compile:function (tElement, tAttrs, transclude) {
tElement.html(kineticContainer);
},
controller: KineticCtrl
};
});
コントローラは次のようになります。
function KineticCtrl($scope) {
$scope.stage = new Kinetic.Stage({
container: 'container',
width: window.innerWidth,
height: window.innerHeight - $('.navbar').outerHeight()
});
$scope.drawNode = function(posx, posy) {
var layer = new Kinetic.Layer();
var group = new Kinetic.Group({
x: posx,
y: posy
});
var line = new Kinetic.Line({
points: [0, 25, 500, 25],
stroke: 'black',
strokeWidth: 4
});
var text = new Kinetic.Text({
text: 'www.google.com',
fontSize: 18,
fontFamily: 'FontAwesome',
fill: '#555',
width: 300
});
group.add(line);
group.add(text);
layer.add(group);
$scope.stage.add(layer);
};
$scope.drawNode(200, 400);
$scope.drawNode(800, 400);
$scope.drawNode(400, 100);
}
どんな助けでもいただければ幸いです!