Angularjs线型图指令将不会加载$资源
这是资源
hq.factory('AvgUsersPerWeek', function ($resource) {
return $resource('/HQ/Graph/GetLoggedinUsersPerWeek')
});
控制器
hq.controller('AvgUsersPerWeekCtrl', function ($scope, AvgUsersPerWeek) {
$scope.xkey = 'Period';
$scope.ykeys = ['CountUsers'];
$scope.labels = ['Aantal'];
$scope.myModel = AvgUsersPerWeek.query();
/*
//example dataset that works, the fetched data has the same structure
[
{ "Period": "2013-04", "CountUsers": 2407 },
{ "Period": "2013-03", "CountUsers": 3351 },
{ "Period": "2013-02", "CountUsers": 2469 },
{ "Period": "2013-01", "CountUsers": 2246 },
{ "Period": "2012-12", "CountUsers": 3171 },
{ "Period": "2012-11", "CountUsers": 2155 },
{ "Period": "2012-10", "CountUsers": 1226 },
{ "Period": "2012-09", "CountUsers": 2245 }
]; */
})
据透露。如果我用下面的数据集替换AvgUsersPerWeek.query(),它就可以工作。因此,我的资源出现了问题(提取(Fiddler)),但值不会插入到我的图表中。
我已经进行了双重检查,示例数据集具有与由数据集获取的数据集相同的结构$资源。
我没有封闭的HTML,因为它的作品。我想有什么东西在路上我使用$资源。
我猜你缺少你的资源回调,你应该做这样的事在您的控制器中:
AvgUsersPerWeek.query(function(data) {
$scope.myModel = data;
});
更多信息
在你的指令见this page的数据可能是不更新,你应该添加一个观察者(或观察的属性)的指令,根据从资源的变化来更新数据
$attrs.$observe('data', function(newVal){
console.log(newVal);
// The rest of your link
})
这里是你的jsfiddle
问题作者更新的更新版本:我改变了指令的使用方法:
$scope.$watch(attrs.data, function (newVal) { ...
它的工作原理,thx!
我封装它像: AvgUsersPerWeek。查询(功能(数据){scope.myModel = data; }); 它仍然不呈现图表(也没有错误)。 Fyi,我根据我的代码:http://jsbin.com/ayUgOYuY/5/edit – NicoJuicy 2014-09-05 08:50:08
jsfiddle似乎不工作。但是线图的指令使用链接。链接中的数据尚未加载,所以图正在尝试加载一个空数据集。据我说,它很快加载。这里实际上是一个jsfiddle中的所有代码(包括linechart指令) – NicoJuicy 2014-09-05 09:31:50
http://jsfiddle.net/f3y8qbun/ – NicoJuicy 2014-09-05 09:37:51
查询的结果是什么?你可以登录'AvgUsersPerWeek.query()'吗? – 2014-09-05 08:27:38
[{“Period”:“34”,“CountUsers”:19},{“Period”:“35”,“CountUsers”:9}]。我用我的测试数据替换了这些值,以检查图表是否已加载并确实存在。 – NicoJuicy 2014-09-05 08:43:36
好,你有正确的数据。但$资源使用承诺,这是异步的,所以当范围初始化时,承诺可能无法解决 – 2014-09-05 08:49:10