gpt4 book ai didi

javascript - Ember.js - 应用程序
呈现两次?

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:07 25 4
gpt4 key购买 nike

我正在使用以下 Ember.js 堆栈:

DEBUG: ------------------------------- 
DEBUG: Ember : 1.1.2
DEBUG: Handlebars : 1.0.0
DEBUG: jQuery : 2.0.2
DEBUG: -------------------------------

我声明了一个 application.hbs呈现我的 Handlebars 模板 App.ApplicationView

{{#view App.ApplicationView}}
{{outlet 'modal'}} {{outlet 'notificationCollection'}}
{{#if isUserAuthenticated}}
{{render sidemenu authenticationState=isAuthenticated}}

{{outlet 'upperNotification'}}

<div id="main" class="main">
{{outlet}}
</div>
{{else}}
{{outlet}}
{{/if}}
{{/view}}

出于调试目的,我添加了 gotchaclassNames App.ApplicationView 的数组.当我现在检查 DOM 时,我可以看到 App.ApplicationView被渲染两次(也被装箱):

...
<div id="appRoot" class="ember-application">
<div id="ember444" class="ember-view gotcha">
<div id="ember445" class="ember-view gotcha">
...more content..
</div>
</div>
</div>
...

编辑:我应该先尝试一下,然后再将其发布在 stackoverflow 上...如果我删除 {{#view App.ApplicationView}}{{/view}}声明,它只被渲染一次,正如预期的那样 ;)

所以,对我来说仍然是个奇迹的问题是Ember.js真正生成一个封闭的 <div id="ember666" class="ember-view"></div>对于每个 {{outlet}} ??


为什么 Ember.js这样处理?我怎样才能防止它呈现 App.ApplicationView两次? 而且,除此之外,是 Ember.js真正生成一个封闭的 <div id="ember666" class="ember-view"></div>对于每个 {{outlet}} ? (我在我的应用程序中看到了这种行为)

最佳答案

默认情况下,是 {{outlet}}会将您的模板附在 <div> 中.但是,您可以通过在 socket 上指定 View 类并定义 View 类'tagName 来更改该行为。属性(property)给任何你想要的。

例如,导出

{{outlet viewClass=App.HeaderContainer}}

有风景

App.HeaderContainer = Ember.ContainerView.extend({
tagName: 'header'
});

会将 socket 包裹在 <header> 中标签。

关于javascript - Ember.js - 应用程序 <div/> 呈现两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19999946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com