【发布时间】:2016-07-30 20:12:46
【问题描述】:
此链接上有一个 d3 树图代码 -
http://jsfiddle.net/cyril123/h0q6xb45/1/
现在 this 中的数据是静态的,即它在控制器的范围内,但没有从任何地方加载。所以我编写了一项服务-
app.service('grabdata', function($http){
var data = [];
$http.get('someApi').then(function success(response){
var company = [];
var wtdCagr = [];
var children = [];
for(var i=0;i<response.data.length;i++){
company.push(response.data[i].companies);
wtdCagr.push(response.data[i].wtdcagr);
children.push({name:response.data[i].companies, value: 3241});
}
data.push({name:"flare", children:children});
});
return {
getData: function(){
return data[0];
}
};
});
我已经设置了控制器-
app.controller('myController', ['$scope', '$http','grabdata', function($scope, $http, grabdata) {
$scope.$watch(grabdata.getData, function(change){
$scope.data = change;
}, true);
}]);
我稍微编辑了指令-
return {
restrict: 'EA',
scope: {data: '='},
link: function(scope, elem, attrs) {
scope.$watch(scope.data, function(newValue){
console.log(newValue);
var root = scope.data;
});
var root = scope.data;
但我在控制台上收到此错误-
TypeError: Cannot read property 'length' of undefined
这意味着数据没有进入指令,我做错了什么?
【问题讨论】:
标签: javascript angularjs d3.js angularjs-directive