2012-05-03 4 views
14

Нет ли способа иметь встроенный скрипт в шаблоне Handelbars?inline javascript в шаблоне handlebars

<script type="text/x-handlebars"> 
    I'm a row of type "foo" 
    <script type="text/javascript">alert('hi');</script> 
</script> 

Когда приведенный выше шаблон отображает, встроенный скрипт удаляется.

То, что я пытаюсь сделать, это включить виджет disqus на странице. Виджет - это в основном скрипт разметки + disqus.

Виджет должен быть включен в под-просмотр моего приложения. Подвью не отображается по умолчанию, но отображается в соответствии с некоторой логикой в ​​моем коде приложения Ember.

ответ

10

Вам придется обернуть этот виджет в пользовательском Ember.View, чтобы обработать его экземпляр и добавить его в DOM в makeInsertElement. Ember ожидает, особенно внутри шаблонов руля, иметь полный контроль над манипуляциями DOM, и он делает это с помощью комбинации рулей и создания Ember.View. После того как вы определили свой customview:

MyApp.DisqusView = Em.View.extend({ 
    didInsertElement: function() { 
     // create widget and append it to this.$() 
    } 
}); 

Вы можете использовать его в шаблоне руле:

{{view MyApp.DisqusView}} 

Ваше мнение должно не добавить теги сценария, по соображениям безопасности, а должны выполнять любые JS непосредственно для вставки виджета.

+0

+1 и AFAIK, идея руля должна иметь шаблоны без логики – louiscoquio

+0

@louiscoquio В моем шаблоне рулей нет никакой логики. Логика в JS включена, когда нужно показать шаблон. Шаблон имеет только тег скрипта внутри себя. – Rajat

+0

@ Раджат Я сделал ошибку, извини. – louiscoquio

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