【发布时间】:2017-08-28 20:42:32
【问题描述】:
我们正在创建一种在我们的工作门户中进行过滤的方法。
{{#rl-dropdown tagName="ul" class="dropdown-menu" closeOnChildClick="li"}}
<li {{action 'filterWith' department 'all'}}>
All
</li>
<li active=true {{action 'filterWith' department 'intern'}}>
Intern
</li>
<li {{action 'filterWith' department 'newgrad'}}>
New Grads
</li>
<li {{action 'filterWith' department 'entry'}}>
Entry Level
</li>
<li {{action 'filterWith' department 'senior'}}>
Senior
</li>
{{/rl-dropdown}}
当用户点击<li> 时,它会调用函数filterWith 过滤或/或(也就是在任何时候都应用一个过滤器)。我们希望单击的任何过滤器都以与其他过滤器不同的颜色突出显示。
实现这一点非常困难,因为我们希望以一种不使用 jQuery 的方式来实现(我们在将 jQuery 和 Ember 混合在一起时遇到了麻烦)。如果我们知道怎么做,我们也许可以用 Bootstrap 来做。
编辑:
这是我的 Ember 控制器(也就是定义了 filterWith 的地方)。
export default Ember.Controller.extend({
department: 'all',
level: 'all',
filteredPosts: Ember.computed('level', function() {
var emberCont = this;
return this.get('model').filter(function(item){
var lvl = emberCont.get('level');
// This should be refactored somehow
if(lvl == 'all') {
return true;
}
else if (lvl == item.get('level')) {
return true;
}
return false;
});
}),
actions: {
filterWith(dept, lvl) {
this.set('department', dept);
this.set('level', lvl);
}
}
});
我通过两个变量(级别和过滤器)进行过滤。部门目前没有做任何事情,所以我建议忽略它。
【问题讨论】:
-
您能否展示一下
filterWith操作?还有什么是rl-dropdown组件? -
可以像this work 这样的东西吗?我添加了一个 if 条件来添加一个类。我想你只需要给它上色。
-
只要它有效,我就对它的混乱感到满意。最终,我只需要某种选择器(例如
:hover)来更改 CSS。
标签: html css twitter-bootstrap ember.js handlebars.js