Использование Durandal dojoConfig и ESRI Maps

Я пытаюсь заставить карты ESRI работать с Durandal и наткнулся на эту ссылку в документации Durandal DurandalEsri

Кажется, это работает, но теперь у Durandal возникают проблемы с поиском некоторых моих файлов .js. Если я оставлю следующий dojoConfig отключенным, мои скрипты будут найдены, но тогда карты не будут работать.

`var dojoConfig = {
    baseUrl: './',
    async: true,
    tlmSiblingOfDojo: true,
    parseOnLoad: false,
    aliases: [['text', 'dojo/text']],
    packages: [
        { name: 'esri', location: '//serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/esri' },
        { name: 'dojo', location: '//serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/dojo/dojo' },
        { name: 'dojox', location: '//serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/dojo/dojox' },
        { name: 'dijit', location: '//serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/dojo/dijit' },
        { name: 'durandal', location: 'App/durandal' },
        { name: 'views', location: 'App/views' },
        { name: 'viewmodels', location: 'App/viewmodels' },
        { name: 'lib', location: 'App/lib' }
    ]
};`

Структура моего приложения выглядит так:

  • App
    • durandal
    • библиотека
    • Сервисы
    • модели просмотра
    • Просмотры

Таким образом, в моем файле shell.js, если я пытаюсь передать «lib/config», я получаю 404, потому что он пытался найти файл конфигурации в localhost/lib/config.js вместо localhost/dashboard/app/lib/config. js

Если я передам «dashboard/app/lib/config» в shell.js, файл будет найден, но не похоже, что мне нужно указывать весь путь, поскольку «durandal/system» и все остальное под « папка durandal находится правильно.

Есть идеи???


person Tyler    schedule 04.06.2013    source источник


Ответы (2)


Я столкнулся с аналогичной проблемой при загрузке модуля AMD с помощью Esri. Я решил это, используя конфигурацию, аналогичную вашей, но со следующим базовым URL:

baseUrl: location.pathname.replace(/\/[^/]+$/, '') + '/path/to/app/main'

Как описано в ответе Джеффри Грайковски на мой вопрос здесь: https://stackoverflow.com/a/15390919/1014822

person Jude Fisher    schedule 04.06.2013
comment
Я как бы заставил его работать, используя ваш метод, но по какой-то причине мне пришлось добавить дополнительный /App к пути ...+'/App/App'. Мне также пришлось использовать модифицированный dojo.js из ссылки в моем вопрос - person Tyler; 05.06.2013
comment
Не уверен, зачем ему нужно дополнение App, но рад, что оно у вас работает. - person Jude Fisher; 05.06.2013
comment
Я столкнулся с еще некоторыми проблемами, когда пытался интегрировать изменения в свое настоящее приложение. В моем приложении мы явно загружаем require.js следующим образом: для файлов esri на локальном хосте и получаю 404. Я предполагаю, что когда я не включаю durandals require.js, он в конечном итоге использует dojo AMD - person Tyler; 05.06.2013

Поэтому для моего сценария Durandal + Esri + Dojo мне пришлось исключить файл require.js, входящий в состав Durandal, и использовать загрузчик AMD dojo. К сожалению, я понятия не имею, какие проблемы в будущем это может вызвать. Дополнительную информацию можно найти здесь

person Tyler    schedule 05.06.2013