angular http get service通过服务需要刷新来显示数据

时间:2014-09-18 12:07:59

标签: javascript angularjs http gruntjs angular-http

我发现了许多类似的问题,但我无法将解决方案应用到我的问题中。

所以在我的角应用程序中,我正在绘制nvd3图表。

我正在服务中进行获取请求,我可以在浏览器中看到网络,我总是得到我想要的图表数据。

问题在于,当我运行grunt serve来启动我的角度应用程序时,我仍然通过api获取数据,但由于某种原因它们没有显示。

只有在我运行grunt serve时才会发生这种情况。但是,如果我点击刷新,在运行grunt serve之后,数据会正确显示。

提前感谢您的帮助。

这就是我想要做的事情:

'use strict';

angular.module('myApp')
.service('mainService', function($http) {
  this.getData = function() {
    return $http({
      method: 'GET',
      url: '/rest/api/config',
    });
  }
})
.controller('MainCtrl', function($scope, $http, mainService) {
  var name = 'main';
  var model; 

  mainService.getData().then(function(d) {
    model = d.data;
    $scope.modelling();
  });

  $scope.modelling = function() {
    if(!model) {
      console.log("no model");
      // set default model for demo purposes
      model = {
        title: "about",
        structure: "12/4-4-4",
    };
  }

  console.log(model);
  $scope.name = name;
  $scope.model = model;
  $scope.collapsible = true;
  }
});

1 个答案:

答案 0 :(得分:0)

尝试这样的事情。最初,在您的示例中,$ scope.model将是未定义的。


.controller('MainCtrl', function($scope, $http, mainService) {
  var name = 'main';

mainService.getData().then(function(d) { $scope.modelling(d.data); });

$scope.modelling = function(data) { //do something with data here, or set $scope.model = data; }

$scope.name = name; $scope.collapsible = true; } });

这可能有效,取决于你如何设置nvd3图表。