在使用其他框架2年后,我尝试着回到ember.js
。对我来说最令人讨厌的“惊喜”是不再有views
了,因此我不能使用classNames
或tagName
来定制html元素。为了更详细地说明我的问题是什么:
假设我们已经创建了route,例如/myroute
。我们的templates/myroute.hbs
的内容是:
<div>test</div>
好的,让我们使用检查器查看我们的html:
<body class="ember-application">
<div id="ember341" class="ember-view">
<div>test</div>
</div>
</body>
我想知道如何删除这个元素<div id="ember341" class="ember-view">
在一个新的ember的方式,我如何可以改变class
的属性,标签?
谢谢你!
4条答案
按热度按时间ff29svar1#
我不认为您可以删除
<div id="ember341" class="ember-view">
,因为Ember使用它来管理文档。但是,使用components您可以执行以下操作:应用程序/组件/my-list.js:
应用程序/模板/组件/我的列表.bhs:
要使用此组件(例如在管线中),可以执行以下操作:
它将生成以下html:
以下是一些关于如何使用组件的有用文档(来自Ember文档):
rdlzhqv92#
并不是每一个route都会创建一个
div
,但ember创建了一个不能修改的根div,这在以前的版本中确实是可以修改的,但现在你不能修改根div的类,也不能禁用它。然而,其他路由不会创建额外的
div
。只有一个根div,您不能修改。hfyxw5xn3#
由于Ember 3.1,您可以使用可选功能删除顶级 Package 器
div
。可选功能:应用程序模板 Package 程序
禁用此功能将阻止Ember在应用程序周围创建div。此更改可能需要更改应用程序的CSS,或任何其他依赖于div存在的代码。
此外,启用此功能将提示您选择性地运行codemod,以将应用程序div添加到应用程序的application.hbs中。
ki1q1bka4#
上面的答案对我都不起作用,这是一个简单的方法,它将删除所有ember视图标签
因为我们是在渲染中这样做的,所以应该在其他所有事情都完成之后,但这可能会破坏插件,所以将其应用于您希望更改的内容而不是整个文档可能会更安全。
我的用例是因为我们要将代码从Rails移植到ember中,所以我们需要保留相同的div结构,这样我们就可以使用所有现有的脚本和css。