2014-10-22 6 views
0

Я пытаюсь написать поставщика в угловой, но я не могу понять, почему метод $ get не вызывается.

Я знаю, что это такое, но я не знаю , когда его называют угловым, это когда поставщик вводится? что мне нужно, чтобы вернуться оттуда? может ли кто-нибудь сделать простой пример, демонстрирующий это?

Я попробовал AngularJS examples, но для жизни меня я получаю одинаковые результаты.

var RoutingProvider = (function() { 
    function RoutingProvider() { 
     this.$get = function ($injector) { 
      console.log("do something"); 

      return new RoutingProvider(); 
     }; 
     this.$get.$inject = ['$injector']; 
    } 
    RoutingProvider.prototype.register = function (routes) { 
     console.log(routes); 
    }; 
    return RoutingProvider; 
})(); 

РЕДАКТИРОВАТЬ:

Вот пример обеспечивается угловой документации.

function UnicornLauncher(apiToken, useTinfoilShielding) { 
    this.launchedCount = 0; 
    this.launch = function() { 
     this.launchedCount++; 
    } 
} 

bootstrap.provider('unicornLauncher', function UnicornLauncherProvider() { 
    var useTinfoilShielding = false; 

    this.useTinfoilShielding = function(value) { 
     useTinfoilShielding = !!value; 
    }; 

    this.$get = ["apiToken", function unicornLauncherFactory(apiToken) { 
     console.log("foo"); 
     // let's assume that the UnicornLauncher constructor was also changed to 
     // accept and use the useTinfoilShielding argument 
     return new UnicornLauncher(apiToken, useTinfoilShielding); 
    }]; 
}); 

bootstrap.config(["unicornLauncherProvider", function(unicornLauncherProvider) { 
    unicornLauncherProvider.useTinfoilShielding(true); 
}]); 

Вот plunk Я сделал, что его демонстрирует.

Опять же, я не вижу печатного сообщения, поступающего из функции $ get.

+0

Показать свой код? Это может помочь. – vgoff

+0

показать свой код ... – user2717954

+0

Можете ли вы опубликовать код, который вы пробовали, который не ведет себя так, как вы ожидаете? –

ответ

0

Я получил ответ от Angular channel over irc от Foxandxss, вот что он сказал.

есть два различных нагнетательные места службы, контроллеры, директивы, запускать ой и фильтры там вы можете вводить услуги, но не провайдеров то, у вас есть еще инъекционное место, поставщики и конфигурации функции там можно только вставлять константу и поставщиков, так что поставщик имеет две части: «часть поставщика, которая является конфигурацией» и «фабрика» внутри нее, которая является $ get, если вы вводите своего провайдера другому провайдеру или конфигурации, который вы вводите часть конфигурации и , вы должны добавить Поставщика на имя, чтобы при введении «unicornLauncher» в co nfig вы должны поставить «unicornLauncherProvider» , который будет вводить часть конфигурации, а не $ get, если вы перейдете на контроллер, и вы будете вводить unicornLauncher, он будет вводить в него завод (AKA $ get), вы не сможете доступ «usetinfoilshielding» внутри него, потому что это часть провайдера и не завод ($ получить) внутри так в основном поставщик две части , и вы используете один или другой вы не можете использовать как

Смежные вопросы