サーバーからデータを取得してコントローラーに送信するサービスがあります。
サービス:
publicApp.angularModule.factory('resultService', function ($http) {
return {
getResult: function() {
return $http.get("/Result/GetResult")
.success(function(result) {
return result.data;
}).error(function(result) {
console.log("error" + result);
});
},
};
});
コントローラ:
publicApp.angularModule.controller('PublicResultCtrl', function ($scope, $location, resultService) {
resultService.getResult().then(function (resultResponse) {
$scope.data = resultResponse.data;
$scope.graph = [];
_.forEach($scope.data.TreningExerciseScores, function(item) {
$scope.graph.push(addDataToGraph(item.Item2, item.Item1));
});
});
var addDataToGraph = function (num, text) {
return {
y: num,
legendText: text,
};
};
});
そして、コントローラーからデータを取得するディレクティブがあります。私は次のようにディレクティブを呼び出します:
<div id="graph" style="width: 200px; height: 200px" canvasjs graphData="graph"></div>
そして、ここに私の指示があります:
publicApp.angularModule.directive('canvasjs', function () {
return {
restrict: 'A',
scope: {data : '=graphData'} ,
link: function (scope, element, attrs) {
scope.$watch('data', function (data) {
console.log(scope.data);
});
}
};
});
しかし、scope.data は未定義です。$http.get が非同期操作であることは知っていますが、scope.$watch 更新を取得すべきではありませんか?