javascript - Ember.js - 应用程序 <div/> 呈现两次?

标签 javascript html css ember.js handlebars.js

我正在使用以下 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/

相关文章:

javascript - ng-class 的 css 过渡效果

html - 带有上方和下方 div 模式的灵活三 Angular 形框

javascript - 右侧的滑动面板,就像顶部的现有面板一样

javascript - HTML 和 CSS 动画失败

html - CSS focus 伪类,仅在键盘(选项卡式)焦点上

javascript - 不区分大小写查找单词并将其包裹在一个跨度中

javascript - 评估一个变量以用作变量名?

javascript - JSON 字符串转义 - MathJax

html - 可以使用 CSS3 动画延迟光标更改为指针吗?

php - 以与保存时相同的模式显示 mysql 结果