2015-02-09 3 views
7

Я пытаюсь выяснить, как включить внешний источник javascript (Иллюстрация), но только для одной страницы на сайте. Можно ли это сделать в виде или шаблоне?Ember.js включает внешний скрипт на определенной странице

Я обнаружил, что просто добавление <script src="exhibit.js"></script> к шаблону страницы не работает. Если я добавлю его в шаблон для всего сайта, он загрузится просто отлично, однако он загружается на каждую страницу.

Другая сторона моей проблемы может быть более специфичной для экспонирования. Есть ли способ получить сценарий при каждом загрузке страницы? Пример. Когда я впервые посещаю страницу, содержащую сценарий выставки, он загружает приложение ember, включая экспонат, и страница отображается правильно. Я перемещаюсь от страницы, когда я возвращаюсь на страницу, сценарий выставки не перезагружается, поэтому неправильно перерисовывает страницу, как это было в первый раз, когда она была посещена.

+0

Вы строите свое приложение с помощью компонентов? –

ответ

14

Если вы создаете приложение с Ember CLI и exhibit.js является довольно небольшой файл, который вы могли бы быть лучше в том числе exhibit.js в файле vendor.js к mininize HTTP-запросов.

Однако, если вы хотите загрузить exhibit.js в одном маршруте ваш может использовать метод, описанный в polyfill this answer как так:

// app/controllers/some-route-name.js  

import Ember from 'ember'; 

export default Ember.Controller.extend({ 

    loadPlugin: function() { 
    // Use run loop if you need to setup the DOM first 
    Ember.run.scheduleOnce('afterRender', this, function() { 
     Ember.$.getScript('path/to/exhibit.js'); 
    }); 
    }.on('init') 

}); 

Это асинхронно загрузить файл. getScript docs are here - вы увидите, что вы также можете использовать обратные вызовы.

Если вам не нужна настройка DOM перед загрузкой, вы можете удалить цикл выполнения. Загрузка этого скрипта на событие контроллера init предотвратит его перезагрузку каждый раз, когда пользователь переходит к маршруту. Если вы do хотите загрузить скрипт каждый раз, когда вы можете переместить getScript на просмотр didInsertElement.

+0

Спасибо! Я поместил getScript в 'didInsertElement', и он отлично работает. – Jared

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