2015-07-22 4 views
2

Я пытаюсь настроить некоторые константы приложения с конечной точки http. Я не хочу (или нуждаюсь) сделать это с помощью ручной начальной загрузки (ala this). В идеале я хочу загрузить константы после входа пользователя. Поэтому я предполагаю, что мне нужно определить константы где-нибудь, где я могу запустить некоторый код (и использовать $ http). Но всякий раз, когда я определяю константу внутри контроллера или блока конфигурации, константа дает неизвестную ошибку поставщика, когда я передаю ее в другой модуль. Как только я перехожу к определению вне контроллера, он работает. Так, например, если у меня есть ...Можно ли определить константу angularjs внутри контроллера или блока конфигурации?

var app = angular.module('testApp',[]); 
     app.constant('test', 'test value'); 

то я могу передать, что в контроллер другого модуля, как это:

var app2 = angular.module('anotherModule',[testApp]); 
    app2.controller('TestCtrl', ['test', 
    function(test) { 
     console.log(test)` 
    }.. 

и это будет выход «тестовое значение», как можно было бы ожидать. Но если константа определена внутри блока кода, то, похоже, она не регистрируется как поставщик. Так, например:

var app = angular.module('testApp',[]); 
     app.controller('firstCtrl',function(){ 
       app.constant('test', 'test value'); 
     } 

Если я запускаю страницу с этим контроллером, константа, кажется, зарегистрировать (в том смысле, что он указан в массиве _invokeQueue на модуле TestApp), но обслуживание инжектора не у вас есть провайдер, и я получаю неизвестный метод провайдера для него на anotherModule.

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

+0

может объявить его как объект ... затем расширить объект – charlietfl

+0

Module.constant является угловой концепцией, которая, кажется, идеально подходим для того, что я пытаюсь сделать, но я просто не могу заставить его быть инъекционным если я определяю его внутри блока кода. Я надеюсь на некоторое понимание того, что это такое и как я могу программным образом определить константу, которую можно вводить. – IrishDubGuy

+0

Что вы пытаетесь сделать, определяя константу внутри контроллера? Постоянна ли зависимость от данных от контроллера? – bytebender

ответ

0

Самый простой способ загрузки констант для HTML5 приложения:

  1. добавить следующую строку в головной секции: < сценарий SRC = "сервис/constants.js">

  2. создания Web API/wcf/java метод службы REST с подписью «service/constants.js»

  3. в этом методе return «window.constants = {...}».

  4. заменить «...» на фактический ключ: пары значений, считанные из базы данных.

+0

ну, я пытаюсь сделать это угловатым способом :) Если бы я сделал это за пределами, я бы, вероятно, использовал метод ручной бутстрап, связанный в моем вопросе. – IrishDubGuy

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