从angular.module配置中获取数据到相应的控制器

时间:2015-07-10 12:54:35

标签: angularjs controller config

我有以下配置,我有一个配置,其中使用$ http.get方法调用url,数据存储在变量“alpha”中。如何从控制器访问此变量。我试图将$ rootScopeProvider注入配置并尝试设置$ rootScope.pqr = alpha。这给出了一个错误。我该怎么做?

Private Sub dataGridView1_CellFormatting(ByVal sender As Object, _
      ByVal e As DataGridViewCellFormattingEventArgs) _
      Handles dataGridView1.CellFormatting
  If Me.dataGridView1.Columns(e.ColumnIndex).Name = "TheTextColumnName"  Then
    If e.Value IsNot Nothing Then 
        e.Value = CType(e.Value, String).Replace(vbtab,"|")
    End If
  End If
End Sub

我该怎么做?

2 个答案:

答案 0 :(得分:2)

实际上我想知道你如何在配置阶段获得$http服务。您只能根据documentation

在该阶段配置提供程序和加载常量
  

配置块 - 在提供商注册期间执行   和配置阶段。 只能注入提供者和常量   到配置块。这是为了防止意外实例化   服务在完全配置之前。

当我尝试将服务注入配置阶段时,我收到以下错误:link

最好的办法是编写服务以从您想要的服务器获取信息,并将该服务注入您的指令。 (在其他地方你需要它)

示例:(working示例更广泛)

.controller('TestController', function(alphaService) {
  var self = this;

  self.alpha = alphaService.get().success(function(data) {
    self.alpha = data;
  });
})

.factory('alphaService', function($http) {
  return {
    get: function() {
      return $http.get('url');
    }
  };
})

.directive('myDir', function(alphaService) {
  return {
    restrict: 'E',
    link: function (scope, element, attr) {
      scope.alpha = null;

      alphaService.get().success(function(data) {
        scope.alpha = data;
      });
    },
    templateUrl: 'mydir.html'
  };
});

答案 1 :(得分:1)

如果你使用的是ui-router-extras,你可以使用$ futureStateProvider,你也可以使用$ rootScope并在控制器中访问它

angular.module('thisApp', [someDependencies])
.config( function($futureStateProvider, $stateProvider, $urlRouteProvider) {

    $futureStateProvider.addResolve(['$http', '$rootScope', function($http, $rootScope) {
        $http.get('url').then(function(response) {
            $rootScope.alpha = response.data;
        )};
    }]);
})

1)在控制器中,您应该注入rootScope并访问该变量。阅读本文以了解$futureStateProvider in ui-router extras

2)如果您不想使用rootScope,请创建服务并将其注入到$ futureStateProvider.addResolve中,在服务中设置变量。之后,您可以通过getter函数获取变量值

希望有所帮助