javascript - Emberjs动态数据切换效果

标签 javascript ember.js ember-cli

我有一个表,其中加载了来自 api 的动态数据。 <td></td>显示公司名称,单击时我想要一个包含要显示的公司信息的 div。我看到了一些例子,这就是我所做的:

这是我的 Handlebars :

{{#each m in model}}
    <tr>
        <td >
            <p {{ action 'displayDetails' }}>{{m.name}}</p>
            {{#if showDetails}}
                <div class="company_details">
                    <p><strong>Wesbite URL: </strong><a href="{{m.website}}">{{m.website}}</a></p>
                    <p><strong>Development Wesbite URL: </strong><a href="{{m.dev_website}}">{{m.dev_website}}</a></p>
                </div>
            {{/if}} 
        </td>
    </tr>
{{/each}}

正如您所见,当您单击公司名称时,将调用 displayDetails 操作

这是我的 Controller :

export default Ember.ArrayController.extend({
    showDetails: false,

    actions: {
        displayDetails: function(){
            this.toggleProperty('showDetails');
        }
    }
});

这很好用;但是,如果我单击公司名称,所有公司详细信息都会显示,而不仅仅是我单击的公司。我显然只是想显示我点击的公司的具体详细信息,我该怎么做?

最佳答案

为模型中的每个项目添加一个属性,名称类似于 isDetailsS​​hown

您可以通过将项目传递到方法中来修改您的操作。

<p {{ action 'displayDetails' item}}>{{m.name}}</p>

在操作中,只需切换传入项目的属性即可。

displayDetails: function(item){
  item.toggleProperty('isDetailsShown');
}

最后修改模板中的if条件如下

{{#if item.isDetailsShown}}

关于javascript - Emberjs动态数据切换效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30091514/

相关文章:

ember.js - 进入root状态时加载数据

javascript - 为副作用而导入的 ES6 模块的公认做法?

ubuntu - 在 ubuntu 上安装 ember-cli。 ember 新应用程序静默失败

ember.js - 从 ember-cli 插件继承液体火过渡

unit-testing - 单元测试获取数据的 Ember 服务

javascript - 在外部按钮上触发一个 div/<a> 点击光滑的 slider

javascript - 三个js添加灯光onclick

javascript - 使某些 JS 代码比另一个更重要(鼠标移开时消失)

javascript - 将 js 插入 iframe 无法按预期工作

ember.js - Ember 模板中的访问常量