2012-03-16 37 views
5

目前,如果我们将视图定义为{{#view App.myView}},则ember/handlebars会将视图元素包装在<div id="ember-1234" class='ember-view'>内。Ember JS/Handlebars查看帮手

有没有办法阻止它?

回答

11

你可能要设置标记名“”。

App.MyView = Em.View.extend({ 
    tagName: '' 
}); 

至少它停止包裹内容。

1

我假设你正在谈论的不是可定制的'ember-view'类(元素类型可定制归功于tagName属性......)。实际上,Ember后来使用这个类在文档上注册(once!)一个事件监听器,以便将事件分派给JS视图。

我不介意这会更简单,以避免使用这个类。必须找到另一种方式来选择所有的烬的控制元素,但我不知道如何。

source,@行117

+0

其实,我是说myView会像这样生成

。基本上,我不希望#myView被包裹在内#ember-1234 – 2012-03-16 06:11:13

+0

添加了另一个回复... – 2012-03-16 06:14:14

2

如果您想自定义视图元素的ID,你可以使用:

{{#view App.myView id="my-id"}} 
+0

但它仍然包裹在一个div里面,当它生成时。我想摆脱包装股利。 – 2012-03-16 06:18:08

+0

所以你想要的不是一个视图...你能详细说明一下你的代码示例吗?你的目标是什么?也许你可以在没有视图的情况下包含你的内容。 – 2012-03-16 06:24:18

2

我经常觉得我的意见包装。例如,如果初始给定的HTML代码:

<div class="item"><p>my stuff></p></div> 

然后,我创建与标记名属性为“DIV”(这是默认值),和类名属性为“项目”的图。这将使得,在适当的车把模板:

{#view App.myView} 
    <p>my stuff></p> 
{/view} 

-> render as 

<div id="ember-1234" class="ember-view item"> 
    <p>my stuff></p> 
</div> 

然后,如果你需要有这个div您的正确的ID,你可以定义你的视图类的“elementId”属性(之前创建())。 (@see source code