Ember JS / Handlebars查看助手

时间:2012-03-16 05:31:13

标签: ember.js handlebars.js

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

有办法阻止这个吗?

5 个答案:

答案 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

另请查看Create Ember View from a jQuery object

相关问题