2014-12-30 2 views
0

В AngularJS я знаю, что я могу вводить услуги через инжектор зависимости для поставщика, которого я определяю (сервис, контроллер и т. Д.). Я знаю, что я могу сделать что-то вроде этого:Может ли Угловой инжектор вводить метод?

app.factory('myFactory', ['$window', function ($window) { 
    // Now I can check properties on Window. 

    if (!$window.sessionStorage) throw new Error("message"); 
}]); 

Но можно сделать что-то вроде этого, с инжектором?

app.factory('myFactory', ['$window.sessionStorage', function ($storage) { 
    // Now I can check properties on Window. 

    if (!$storage) throw new Error("message"); 
}]); 

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

Спасибо!

+0

нет, если вы не зарегистрировали его как поставщика, сервис, завод и т. Д. – charlietfl

ответ

0

На самом деле - есть способ сделать это, используя .constant или .value. (Из того, что я понимаю, .constant может быть использован в config блоке, в то время как value быть не может.) Вы бы сделать что-то вроде следующего:

angular.module('myApp', []) 
    .value('storage', window.localStorage); 

... и там у вас есть.

В качестве альтернативы, так как поставщики в угловом роде сосать (и довольно запутанные и трудно вспомнить), что может быть проще просто использовать .provider и вручную прикрепить что-то вроде window.localStorage функции $get.

0

Вы не можете делать то, что вы пытаетесь сделать. Вам нужно будет создать службу обертки. Это было бы очень просто сделать. Для хранения сеансов существует ngStorage, который вы можете использовать: https://github.com/gsklee/ngStorage. Используя это, вам не придется сериализовать/десериализовать.

+0

Да, я знаю, что ngStorage и я уже писал обертки для служб. Я надеялся избежать этого здесь, чтобы я мог позволить кому-то привнести что-то по их выбору. Это для моей библиотеки [Memento] (https://github.com/jedd-ahyoung/memento) - в частности, window.sessionStorage. –

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