Как передать ссылку на $ http в AngularJS?

0

У меня есть следующее определение контроллера:

angular.module('myapp', [ 'ngRoute' ]).config(function($routeProvider,
$httpProvider) {

[...]
})
.controller('edit', function($scope, $http, $routeParams) {
    $scope.projectid = $routeParams.id;
    $scope.viewer = "undefined";
    $scope.mode = 'nothing';
    var projectid = $routeParams.id;
})
.directive('initCesium', function(){
    return {
        restrict: 'AEC',
        link: function(scope, element, attrs) {
            if (typeof Cesium !== "undefined") {
                startup(Cesium, scope);
            } else if (typeof require === "function") {
                require(["Cesium", "scope"], startup);
            }
        }
    }
});

Мне нужно отправить запрос веб-службы при startup функции. Поэтому мне нужно передать $http для startup в 2-х местах:

  1. startup(Cesium, scope);
  2. require(["Cesium", "scope"], startup);

Как я могу это сделать?

  • 0
    А startup есть? ...
  • 0
    как насчет .directive('initCesium', function($http){ ... и затем startup(Cesium, scope, $http) или просто angular.element(document.body).injector().get('$http')
Теги:

1 ответ

1
Лучший ответ

Хорошо, прямо и просто.

Ниже приведен рабочий код, который я создал, который показывает, как можно получить доступ к объекту $ http в функции ссылок вашей директивы.

В вашем случае вы можете применить приведенную ниже логику для передачи ссылок на функции, которые вы собираетесь использовать для доступа к объекту $ http.

Оформить ссылку Js fiddle

Javascript:

var app = angular.module('components', [])

    app.controller("MyCtrl", ["$scope","$http", function($scope, $http){        
        $scope.ctrl = "Works!"
        $scope.http = $http;
    }]);
    app.directive('helloWorld', function () {
        return {
            restrict: 'EC',            
            link:function(scope, elemnt, attrs){
                console.log("Directive");                                                        
                scope.http.post("/echo/json/", "json=%7B%22name%22%3A%22nirus%22%7D")
                .success(function(data, status) {
                    scope.name = data.name;
                   console.log(data.name)
                }).error(function (status) {
                    console.log("Error occured")
                });
            },            
            template: '<span>Hello {{name}} : it {{ctrl}}</span>'
        }
    })

angular.module('HelloApp', ['components'])

Html:

<!doctype html>
  <html ng-app="HelloApp">
   <body ng-controller="MyCtrl">
    <hello-world></hello-world>
   </body>
  </html>

В моей функции ссылок я могу получить доступ к объекту http.

Надеюсь, это поможет вам!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню