Ember js在重复组件中控制类绑定
Ember js controlling class bindings in repeating component
我有一个在每个循环中重复的组件。该组件仅显示文章的标题(可能有数百个)。
下面的代码成功地将类"active"添加到被单击的标题元素中。
我怎么能删除类'活动'从所有以前的标题,当一个新的点击(所以只有一个标题曾经有类活动)?
我最初尝试在控制器上这样做,但我无法弄清楚如何在每个循环中的一个实例上设置isActive属性。
Template.hbs:
{#each posts as |post index item|}}
{{title-component data=post index=index}}
{{/each}}
title-component.hbs:
<a {{bind-attr class="isActive:active"}}{{action 'setActive' index}}>{{data.title}}</a>
title-component.js
actions: {
setActive: function(index) {
this.set('isActive', true);
},
},
既然你为你的逻辑做了一个变通:Ember js在每个循环中获取被点击元素的数组索引,并使用它进行筛选
我在此基础上创造了活跃度。
updateFullText: function(post) {
this.set('activePost.isActive', false); // First lose previous activeness
this.set('activePost', post); // Active post gets re-valuated
this.set('activePost.isActive', true); // Activate new item
}
<div class="left-section">
{{#each categorisedPosts |as| post}}
<span class="{{if post.isActive 'activeClass'}}> {{post.description}} </span>
{{/each}}
</div>
您可以通过多种方式设置活跃度。但是考虑到你已经做了一些工作,我将稍微改进一下你的解决方案。你可以在TitleComponent中定义isActive属性为计算属性,它依赖于控制器中的activeIndex变量。
那么,在控制器中定义'activeIndex'属性:
activeIndex: null
然后,在titlecomponent中定义isActive属性:
isActive: Ember.equal('activeIndex', 'index')
然后,将'global'变量传递给每个组件:
{#each posts as |post index item|}}
{{title-component data=post index=index activeIndex=activeIndex}}
{{/each}}
并更改titlecomcomponent中'setActive'动作中的activeIndex值:
actions: {
setActive: function(index) {
this.set('activeIndex', index);
},
}
注:请考虑消灭"捆绑"助手。
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- 无法通过数组映射绑定
- 主干-不管怎样,检查事件以前是否绑定过
- 用于搜索的聚合物嵌套绑定
- Angular:更新一次性绑定的数据
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 访问表单控制AngularJS中的值,而不绑定数据
- Angular Google Maps - 地图控制中的双向数据绑定
- KnockoutJS - 无容器控制流绑定初始值
- 聚合物数据绑定铁 AJAX 并在控制台中访问获取的 JSON
- 奇怪的JavaScript函数绑定.此控制流是否正确
- 我得到了一个JSON/Javascript对象,因为我可以在控制台中看到它,但我如何让它序列化并使我的数据绑定到我的Ui
- 代码只绑定到开发人员控制台中的事件
- Ember js在重复组件中控制类绑定
- 将函数绑定到jPlayer's "next"控制
- Knockout js嵌套控制流绑定不起作用
- 如何将控制事件绑定到使用javascript原型声明的函数
- WinJS,用于脚本控制绑定的数据赢得绑定
- 从aspx页面调用绑定到用户控制的Javascript方法
- JQuery DatePicker绑定控件可以'不得包含在其他控制中