【问题标题】:Ember JS/Handlebars view helperEmber JS/Handlebars 视图助手
【发布时间】:2012-03-16 05:31:12
【问题描述】:

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

有没有办法阻止这种情况?

【问题讨论】:

    标签: ember.js handlebars.js


    【解决方案1】:

    您可能希望将 tagName 设置为 ''。

    App.MyView = Em.View.extend({
        tagName: ''
    });
    

    至少它停止包装内部内容。

    【讨论】:

      【解决方案2】:

      如果要自定义视图元素的id,可以使用:

      {{#view App.myView id="my-id"}}
      

      【讨论】:

      • 但它在生成时仍然包裹在一个 div 中。我想摆脱包装 div。
      • 所以你想要的不是视图...你能详细说明一下你的代码示例吗?你的目标是什么?也许你可以只包含你的内容而没有视图。
      【解决方案3】:

      我通常认为我的观点是包装。例如,如果初始给定的 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() 之前)。 (@见source code

      【讨论】:

        【解决方案4】:

        我假设您说的是不可自定义的“ember-view”类(元素类型可以自定义,这要归功于tagName 属性...)

        实际上,Ember 稍后使用该类在文档上注册(一次!)一个事件侦听器,以便将事件分派到 JS 视图。

        我不介意避免使用此类会更简单。必须找到另一种方法来选择所有 ember 的受控元素,但我不知道如何。

        参见source,@ 第 117 行。

        【讨论】:

        • 其实我是说myView会这样生成
          。基本上,我不希望 #myView 被包裹在 #ember-1234
        【解决方案5】:

        如果我理解正确,你想实现类似 jQuery 的replaceWith?当我的 Pull Request 被合并时,您可以在 Ember.js 中使用它:https://github.com/emberjs/ember.js/pull/574

        也可以看看Create Ember View from a jQuery object

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-21
          相关资源
          最近更新 更多