встроенный 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. ​


person Rajat    schedule 03.05.2012    source источник


Ответы (1)


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

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

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

{{view MyApp.DisqusView}}

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

person Christopher Swasey    schedule 03.05.2012
comment
+1, и, насколько мне известно, идея рулей состоит в том, чтобы иметь шаблоны без логики. - person louiscoquio; 03.05.2012
comment
@louiscoquio В моем шаблоне руля нет логики. Логика в JS, когда показывать шаблон. Шаблон просто имеет тег скрипта внутри себя. - person Rajat; 04.05.2012
comment
@Rajat Я сделал ошибку, поэтому приношу свои извинения. - person louiscoquio; 04.05.2012
comment
Шаблоны Handlebars действительно должны быть полностью осведомлены о том, что происходит внутри. Другими словами, все, что происходит в шаблоне руля, будь то логика или что-то еще, что не является чистой разметкой, должно происходить внутри нотации {{ helper }}. - person Christopher Swasey; 05.05.2012
comment
Буду признателен, если кто-нибудь из вас поможет мне с этим очень связанным вопросом: stackoverflow.com/questions/12499921/ - person Aras; 20.09.2012