我有以下配置,我有一个配置,其中使用$ 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
我该怎么做?
答案 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函数获取变量值
希望有所帮助