【问题标题】:Cant figure out views rendering (they are prepended right before /body)无法弄清楚视图渲染(它们在 /body 之前添加)
【发布时间】:2012-12-06 03:05:36
【问题描述】:

首先我很抱歉:我对 ember.js 很陌生,到目前为止一直在苦苦挣扎。

我编写了一个非常基本的应用程序,我一直使用它作为我的主要指南:http://trek.github.com/

我现在最大的问题是弄清楚如何处理视图,特别是渲染的 HTML 以及它在 DOM 中的出现位置。看来,至少在我目前的应用程序中,DOM 元素被创建并插入到页面中,但就在 /body 之前。所以所有内容都加载在我的主要网站设计的页脚下方。

脚本模板相对于页面的位置或类似的位置似乎无关紧要??

有没有办法将视图呈现到现有的容器 div 或其他东西?我在想这个错误吗?我习惯使用 jsRender 来设置模板,但它们通常呈现为内存中的字符串,然后我需要将其插入到现有容器中,例如 $('#containerDiv').html(myRenderedHtmlFromATemplate);

感谢您对此的任何帮助或指导!

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    没有看到代码,并不完全清楚到底发生了什么,但是,我没有看到你提到任何关于网点的事情,所以我认为这可能是你的问题。

    在网点上查看此网址:http://emberjs.com/guides/outlets/

    【讨论】:

    • 我正在使用奥特莱斯。我认为最大的问题是似乎 A) ember 应用程序假设它们是整个页面?或B)他们不能很好地被“插入”到现有的页面布局等中。或者我只是做错了什么? ember 是专门为更多的 SPA 设计的吗?
    • 您能否在您的原始帖子中发布一个 jsfiddle 以供我和其他人查看。
    【解决方案2】:

    Ember 会希望它的视图在 DOM 中是分层的,因此它可以依赖事件传播。您可能注意到一个<div class="ember-application"> 被注入,然后您的所有视图都在其中呈现。

    您可以在创建应用程序时指定rootElement。应用程序将在该元素内创建,而 DOM 的其余部分保持不变。如果您未指定 rootElement,则 Ember 将在您观察到的 </body> 之前插入自己。

    例子:

    window.MyApp = Ember.Application.create({
      rootElement: "#containerDiv"
    });
    

    【讨论】:

      【解决方案3】:

      tuxedo25 有最好的解决方案。如果您使用的是StateManager,您还可以使用以下内容:

      App.StateManager = Ember.StateManager.create({
          rootElement: '.content',
          initialState: 'initial',
          initial: Ember.ViewState.create({
              route: 'initial',
              view: Ember.View.create({ templateName: 'initial' })
          })
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多