2013-03-14 4 views

ответ

3

viewExtension не является массивом, поэтому в самом начале, вы не можете установить несколько viewExtensions. Конечно, это просто javascript, и вы можете войти в исходный код и изменить viewEngine.js из основной папки приложения Durandal (ссылка здесь: https://github.com/BlueSpire/Durandal/blob/master/App/durandal/viewEngine.js).

Сообщалось, что если клиент вытащил файл * .cshtml, синтаксис бритвы не будет отображаться так, как вы считаете, что он будет. Если сервер обслуживает представление * .cshtml, он будет отображаться перед тем, как выплюнуть клиента. Лучше всего, если вы ищете динамическое представление рендеринга с Durandal, это переопределить одну или обе функции в viewEngine, будучи: viewEngine.convertViewIdToRequirePath (viewId): строка и для еще большего контроля viewEngine.createView (viewId): обещание.

Для получения дополнительной информации, проверьте эту ссылку: Routing and Leveraging Dynamic Content in DurandalJS

1

Взгляните на этот Gist: https://gist.github.com/irium/5191764

Это мое собственное решение подобной проблемы. Это настройки для Durandal's viewEngine и viewLocator. Импортируйте этот модуль в свой модуль shell и запустите функции customizeViewEngine() и customizeViewLocator(). После этого представления с расширением .html будут обрабатываться по-прежнему, но .cshtml будет запрашиваться с удаленного сервера. Но помните: из-за просмотра кеширования Дюрандаля это будет сделано только один раз. Все последующие запросы того же вида будут использовать кешированную версию на стороне клиента. Это можно изменить, вручную отменив модуль представления из RequireJS, но это выходит за рамки моих потребностей.

Это код CoffeScript, скомпилированный в JavaScript, но я надеюсь, что вы получите эту идею, и мой код вам поможет.

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