Angularjs Linechart指令不会加载$ resource

时间:2014-09-05 08:22:05

标签: javascript 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)。但是这个值并没有插入到我的图表中。

我已经仔细检查过,示例数据集与$ resource提取的数据集具有相同的结构。

我没有附上HTML,因为它有效。我想在我使用$ resources的方式上有一些东西。

1 个答案:

答案 0 :(得分:1)

我猜你错过了资源中的回调。您应该在控制器中执行以下操作:

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) { ...

它有效,谢谢!