Как указать имя тега для шаблонов встроенных скриптов sproutcore/emberjs?

Встроенные шаблоны Ember заключены в DIV. Я хотел бы обернуть их другим тегом. Как я могу это сделать?

Следующий шаблон:

<script type="text/x-handlebars">
Foo
</script>

генерирует что-то вроде:

<div>Foo</div>

Я хотел бы создать что-то вроде:

<someOtherTag>Foo</someOtherTag>

person Poklet    schedule 25.12.2011    source источник
comment
Отличный вопрос! Обходной путь, предложенный в ответе, явно представляет собой очень плохую ситуацию, к которой следует принуждать, поскольку он заставляет разработчика перенести решение о презентации — о том, какой тег должен отображаться в HTML — из шаблона, где все остальные Теги HTML живут (!) и в его коде JavaScript.   -  person Brandon Rhodes    schedule 14.08.2012


Ответы (1)


Я не думаю, что это возможно в текущей версии 0.9.3. Если вы посмотрите на https://github.com/emberjs/ember.js/blob/master/packages/ember-views/lib/views/view.js#L707 div используется, когда свойство tagName не установлено.

Вы можете определить свой собственный Ember.View и установить tagName, но я думаю, вы хотите добиться этого, не создавая свой собственный класс представления.

ОБНОВЛЕНИЕ

Я нашел способ, указав свой пользовательский вид как атрибут data-view в элементе скрипта.

<head>
    <script type="text/javascript" >
        App = Ember.Application.create({});
        App.View = Ember.View.extend({
            tagName: 'someOtherTag'
        });
    </script>
</head>
<body>
    <script type="text/x-handlebars" data-view="App.View" >
        Foo
    </script>
</body>

См. http://jsfiddle.net/9F7kR/2/.

person pangratz    schedule 25.12.2011
comment
Спасибо. Мне нравится ваш обходной путь. Похоже, виноват Ember.Handlebars.bootstrap — он создает Ember.View только с тегами по умолчанию :-( github.com/emberjs/ember.js/blob/master/packages/ - person Poklet; 25.12.2011
comment
Я добавил запрос на вытягивание, который добавляет поддержку атрибута data-tag-name в теге script. github.com/emberjs/ember.js/pull/299 - person pangratz; 25.12.2011
comment
Запрос на включение был объединен с основной веткой, поэтому в следующем релизе ember будет добавлено мое дополнение. - person pangratz; 05.01.2012
comment
Добавление имени тега данных было удалено, так как оно придает тегу скрипта слишком большую силу. Указание имени тега действительно должно быть установлено в пользовательском Ember.View, как описано в ответе. См. обсуждение удаления здесь: github.com/emberjs/ember.js/pull/1112 - person pangratz; 05.07.2012
comment
Не бери в голову. Я отказался от Ember в пользу KnockoutJS. Это дает мне больше контроля над сгенерированным HTML. - person Poklet; 06.07.2012
comment
Удаление этой функции весьма неудачно - возможность установить tagName в теге <script> значительно упрощает одноразовые примеры приложений... - person karmi; 14.08.2012