目前,如果我们将视图定义为{{#view App.myView}}
,则ember / handlebars会将视图元素包装在<div id="ember-1234" class='ember-view'>
内。
有办法阻止这个吗?
答案 0 :(得分:11)
您可能希望将tagName设置为''。
App.MyView = Em.View.extend({
tagName: ''
});
至少它会停止包裹内部内容。
答案 1 :(得分:2)
如果要自定义视图元素的ID,可以使用:
{{#view App.myView id="my-id"}}
答案 2 :(得分:2)
我通常认为我的观点是包装。例如,如果最初给定的html代码是:
<div class="item"><p>my stuff></p></div>
然后我创建一个视图,其tagName属性为“div”(默认值),classNames属性为“item”。这将使用适当的把手模板呈现:
{#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”属性(在create()之前)。 (@see source code)
答案 3 :(得分:1)
我假设您正在讨论'ember-view'类,该类不可自定义(由于tagName
属性可以自定义元素类型...)。
实际上,Ember后来使用这个类在文档上注册(一次!)一个事件监听器,以便将事件分派给JS视图。
我不介意避免使用这个类会更简单。必须找到另一种选择所有余烬控制元素的方法,但我不知道如何。
见source,@ line 117。
答案 4 :(得分:0)
如果我理解正确你想要实现jQuery的replaceWith
之类的东西?当我的Pull请求合并时,您可以在Ember.js中使用它:https://github.com/emberjs/ember.js/pull/574。