2015-11-18 1 views
4

Как бы вы пропустили Debug vs Release аргументы в приложение Aurelia?Как передать (Debug vs Release) аргументы в приложение Aurelia в Asp.Net MVC

В моем случае у меня Aurelia в приложении MVC. Я хотел бы настроить некоторые параметры (URL-адреса и т. Д.) Для Aurelia в зависимости от моих значений web.config.

Есть ли способ, которым я мог бы что-то вроде:

<script src="~/Aurelia/jspm_packages/system.js"></script> 
<script src="~/Aurelia/config.js"></script> 
<script> 
    System.import('aurelia-bootstrapper', @this.ViewBag.MyArgs); 
</script> 

Где this.ViewBag.MyArgs бы содержит аргументы загружаются из MVC?

я мог бы использовать эти аргументы в моих услугах Aurelia, таких как

this.httpClient.configure(x => { 
    x.withBaseUrl(globalArgs.myBackendUrl); 
}); 

ответ

5

Зарегистрируйте вашу строку конфигурации в качестве модуля

index.html

<script src="~/Aurelia/jspm_packages/system.js"></script> 
<script src="~/Aurelia/config.js"></script> 
<script> 
    // register a module named "my-args" that has a single export: "MyArgs" whose value is whatever the viewbag.MyArgs contains... 
    System.set('my-args', System.newModule({ MyArgs: '@this.ViewBag.MyArgs' })); 

    // standard bootstrapping logic... 
    System.import('aurelia-bootstrapper'); 
</script> 

предположения здесь заключается в том, что бритва будет расширяться { MyArgs: '@this.ViewBag.MyArgs' } в любые @this.ViewBag.MyArgs retur ns ... например, { MyArgs: 'debug=true' } или что-то ... вам придется поиграть с этой частью.

Затем в яваскрипте кода, который вы сможете получить доступ к арг так:

import {MyArgs} from 'my-args'; 

Вот рабочий plunker:

http://plnkr.co/edit/Scu8bN?p=preview

Вот документация на System.set API :

https://github.com/systemjs/systemjs/blob/master/docs/system-api.md#systemsetmodulename-module

+0

Большое спасибо! Я попробую это сегодня вечером и пометьте его как ответ, если он сработает. – Stephane

0

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

Мы хотели использовать другой URL-адрес Бриза в зависимости от версии отладки или выпуска и в конце сделали ConfigController в приложении MVC. Это возвращает json-объект соответствующих параметров в зависимости от конфигурации сервера. Затем в клиенте Aurelia у нас есть конфигурационный модуль, который вызывает конечную точку MVC с помощью http-клиента и задает параметры клиентской стороны по мере необходимости.

ConfigController это как-то просто, как:

[HttpGet] 
    public IDictionary<string, object> Get() 
    { 
     return new Dictionary<string, object> { 
      { "Application Name", "My app name" }, 
      { "Debug", true } 
      { "APIHost", ApiSettings.APIHost }, 
      { "APIBaseURL", ApiSettings.APIBaseURL }, 
      { "LoginURL", ApiSettings.LoginURL } 
     }; 
    } 

и клиентский модуль содержит что-то вроде:

loadConfig() { 
    let self = this; 
    let url = 'api/config'; 
    let req = new HttpClient(); 
    return req.get(url) 
     .then(result => { 
      return applyConfig(result); 
     }); 
    } 

    function applyConfig(responseMessage) { 
     if (responseMessage.statusCode === 200) { 
      self.appConfig = JSON.parse(responseMessage.response); 
     } else { 
      self.appConfig = { 
       // Apply some defaults or something here 
      }; 
     } 
     return self.appConfig; 
    } 
} 

Одним из преимуществ этого является то, что легко добавить настройки из, например, строки окружения веб-приложения Azure. Однажды я обнял Обещания, это сработало хорошо :-)

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

  • Нет связанных вопросов^_^