【发布时间】:2012-03-16 05:31:12
【问题描述】:
目前,如果我们将视图定义为{{#view App.myView}},ember/handlebars 会将视图元素包裹在<div id="ember-1234" class='ember-view'> 中。
有没有办法阻止这种情况?
【问题讨论】:
目前,如果我们将视图定义为{{#view App.myView}},ember/handlebars 会将视图元素包裹在<div id="ember-1234" class='ember-view'> 中。
有没有办法阻止这种情况?
【问题讨论】:
您可能希望将 tagName 设置为 ''。
App.MyView = Em.View.extend({
tagName: ''
});
至少它停止包装内部内容。
【讨论】:
如果要自定义视图元素的id,可以使用:
{{#view App.myView id="my-id"}}
【讨论】:
我通常认为我的观点是包装。例如,如果初始给定的 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() 之前)。 (@见source code)
【讨论】:
我假设您说的是不可自定义的“ember-view”类(元素类型可以自定义,这要归功于tagName 属性...)。
实际上,Ember 稍后使用该类在文档上注册(一次!)一个事件侦听器,以便将事件分派到 JS 视图。
我不介意避免使用此类会更简单。必须找到另一种方法来选择所有 ember 的受控元素,但我不知道如何。
参见source,@ 第 117 行。
【讨论】:
如果我理解正确,你想实现类似 jQuery 的replaceWith?当我的 Pull Request 被合并时,您可以在 Ember.js 中使用它:https://github.com/emberjs/ember.js/pull/574。
【讨论】: