2016-09-12 4 views
0

У меня есть этот код в маршруте:EmberJS 2.7 - скачать внешне размещенный файл на переходном этапе маршрута (но только один раз)

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    isEditing: true, 

    beforeModel: function() { 
     return Ember.$.getScript('//api.filestackapi.com/filestack.js'); 
    } 
}); 

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

Я пробовал this solution, но в этом цикле выполнения DOM уже отображается, но мне нужен этот файл для рендеринга страницы, чтобы он не работал. Я также попытался удалить вызов Run loop, но, похоже, он больше не работает в Ember 2.7 (я получил устаревшее предупреждение, и приложение просто ничего не загрузило!).

+0

Да, beforeModel будет срабатывать каждый раз перед transtition к маршруту. Что это за сценарий? Почему вы хотите его загрузить? –

+0

Это плагин JQuery, необходимый для этой страницы, и только эта страница. – rmcsharry

+0

В этом случае рассмотрим возможность использования ember-cli-build и создания компонента –

ответ

1

Да. Ваш подход правильный. это то, что описано в руководствах тоже для крюка beforeModel.

Вы можете вернуть обещание от этого крюка, чтобы приостановить переход до тех пор, пока обещание не разрешит (или отклонит). Это может быть полезно, например, для извлечения асинхронного кода с сервера, который требуется для ввода маршрута.

http://emberjs.com/api/classes/Ember.Route.html#method_beforeModel

+0

Спасибо! Теперь я задаюсь вопросом, будет ли он загружать файл каждый раз для этого пользователя или будет ли Ember автоматически кэшировать его локально. – rmcsharry

+0

Каждый раз, когда переход на маршрут через «beforeModel' hook загрузит этот файл, ember не будет кэшировать его. AFAIK ... и если вы переходите на маршрут с предоставлением модели, то, как вы знаете, она пропустит beforeModel hook, чтобы он не загружался. (для получения дополнительной информации о запуске beforeModel hook [см.] (https://guides.emberjs.com/v2.8.0/routing/specifying-a-routes-model/) – kumkanillam

+1

jquery ajax - 'cache: true' может работать для вас обратитесь [этот ответ] (http://stackoverflow.com/questions/12884097/jquery-getscript-caching) – kumkanillam

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

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