emberjs 基金会 5 手风琴

Posted

技术标签:

【中文标题】emberjs 基金会 5 手风琴【英文标题】:emberjs foundation 5 accordion 【发布时间】:2013-12-16 19:17:33 【问题描述】:

我是 emberjs 的新手,并且有以下包含一些字段的模板,它是固定的,应该匹配模型中的一些字段,但是当我使用带有 ember js 的基础手风琴时,它显示得很好,但是当我点击它,它不会“展开”。

如何让 emberjs 和 Foundation 手风琴一起工作?似乎对 href 的点击会发送到 url 的主题标签

<script type="text/x-handlebars" id="entries">
    <div class="row ">
        <dl class="accordion" data-accordion>
            <dd>
                <a href="#panel1">Accordion 1</a>
                <div id="panel1" class="content">
                    <label>Name</label>
                    input type="text" value=name
                    <div class="row">
                        <div class="large-6 columns">
                            <label>Addresse</label>
                            input type="text" value=adress
                        </div>
                    </div>
                </div>
            </dd>
        </dl>
    </div>

【问题讨论】:

你能告诉我们你是如何为页面添加基础的吗?附加了 dom 对象后,你会调用foundation() 吗? 你有例子吗?您是否在控制台中遇到任何错误? 你为什么不使用 link-to 助手? @Hrishi :因为他没有尝试链接到任何资源。 &lt;a&gt; 标签用于触发手风琴。 【参考方案1】:

你应该在视图被插入之后调用foundation()。例如,如果此模板用于 entry 资源,则应在 EntryViewdidInsertElement 中执行以下操作:

CoffeeScript:

EntryView = Ember.View.extend
  didInsertElement: ->
    @$().foundation()

JavaScript:

var EntryView = Ember.View.extend(
    didInsertElement: function() 
        this.$().foundation();
    
);

【讨论】:

【参考方案2】:

我遇到了同样的问题,并通过重新实现 Foundation 的一些行为来解决它。 Foundation 通过在具有content 类的元素上添加和删除active 类来隐藏和显示手风琴部分。

<div class="row ">
    <dl class="accordion" data-accordion>
        <dd>
            <a href="#panel1">Accordion 1</a>
            <div id="panel1" class="content">
                <!-- Closed panel -->
            </div>
        </dd>
        <dd>
            <a href="#panel2">Accordion 2</a>
            <div id="panel2" class="content active">
                <!-- Open panel -->
            </div>
        </dd>
    </dl>
</div>

您可以很容易地在浏览器开发工具中模拟此操作,但您也可以将其绑定到 Ember 操作,如下所示:

//my_view.js

App.MyView = Ember.View.extend(
  actions: 
    toggle: function(selector) 
      this.$(selector).toggleClass("active");
    
  
);

//template.hbs

<dd>
  <a action "toggle" "#panel1" target="view">Accordion 1</a>
  <div id="panel1" class="content">
    <!-- Closed panel -->
  </div>
</dd>

神奇之处在于action 帮助器,它触发视图中定义的toggle 操作中的功能。您将内容 div 的 ID 作为选择器传递给切换函数,然后由 jQuery 打开或关闭其 active 类。

需要注意的是 target="view" 告诉 Ember 在视图上使用 action,而不是转到您所在的 Ember Route。如果这对您来说看起来很乱,您可以将 toggle 操作放在您的 Route 类上,但对我来说它更像是查看功能。

【讨论】:

以上是关于emberjs 基金会 5 手风琴的主要内容,如果未能解决你的问题,请参考以下文章

封闭期5年的基金属于什么基金?

Q新闻丨Linux基金会迎来JavaScript社区;开源搜索引擎Elasticsearch 5.0版发布;Rust 2017…

基金投资课——第5章-学会如何投资指数基金

ABEY基金会已于2021年5月25-26日参展AIBC 2021迪拜峰会

Rust 核心团队宣布新的 Rust 基金会成立

Q新闻丨Spring 5.0版本发布,带来全新特性;AWS从下周开始将按秒收费;RocketMQ成Apache基金会顶级开源项目