如何在 Ember 应用中实现嵌套全局筛选器
How do I implement nested global filters in an Ember app?
感谢您在这种情况下提供的任何帮助...
我正在尝试构建类似于亚马逊过滤器侧边栏的功能。当选择类别的一个过滤器时,除了主要内容外,还会过滤其他过滤器类别。
假设我正在建立一家销售shirts
和pants
的商店。这些可以按color
和size
进行过滤。
ShopRoute
加载color
和size
的模型。
路线: /shop/shirts
/shop/pants
+---------------------------------------+
| Shop |
| +-----------+ +---------------------+ |
| | Filters | | {{outlet}} | |
| | Color | | (/shirts | |
| | blue | | or | |
| | red | | /pants) | |
| | green | | | |
| | Size | | | |
| | S | | | |
| | M | | | |
| | L | | | |
| +-----------+ | | |
| | | |
| | | |
| +---------------------+ |
+---------------------------------------+
侧面的过滤器是单选按钮;即一次只能选择一个color
,一次只能选择一个size
。
假设我在/shop/shirts
,我选择green
。目前,在x
件绿色衬衫中,唯一可用的尺寸是 M
和 L
.应过滤sizes
,S
不应再是可选选项。
如果我在/shop/shirts
上选择了green
,那么当我访问/shop/pants
时,过滤器应该仍然存在,我应该只看到绿色裤子。如果所有尺寸都可用,S
应重新显示为可选选项。
需要明确的是:反之亦然。如果在选择color
之前选择了size
,则应过滤colors
以反映该size
中colors
的可用性。
到目前为止,我的ShopController
是这样开始的:
App.ShopController = Ember.ArrayController.extend(
colorFilter: null
sizeFilter: null
)
我找到了很多简单的"Hello World"过滤示例。现在,我主要在解决方案的架构上遇到麻烦,迷失在Ember的实体(Model
,Route
,Controller
,View
,...(以及它们如何交互。
每当设置/重置这些选项中的任何一个时,如何从此控制器(或其他地方(过滤所有显示的color
、size
、shirt
和pants
记录?
您应该根据需要使用控制器。我建议创建两个控制器
第一个将管理过滤器/侧边栏。当用户在侧栏中选择任何过滤器时,其属性会发生变化
App.SideBarController = Ember.Controller.extend(
selectedColor: ['Green','Blue'],
selectedSize: ['XL'],
)
现在第二个将是常规列表控制器,让我们说购物列表。在这里,您可以使用这样的东西将侧边栏过滤器与实时绑定引用。
当您在侧边栏控制器中更改更新时,自动绑定此控制器中的更新(通过某些过滤器选择/取消选择(
App.ShopListingController = Ember.ArrayController.extend({
needs : ['SideBar'],
//side bar live bound property for selected colors
selectedColor : Ember.computed.alias('controllers.SiderBar.selectedColor'),
//side bar live bound property for selected size
selectedSize : Ember.computed.alias('controllers.SiderBar.selectedSize'),
//write some code here to get only filtered result
filteredListing : Ember.computed('model.@each','selectedSize','selectedColor',function(){
//do some magic here
})
})
希望它能给你一些帮助:)
另请查看绑定
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- jquery嵌套函数中的全局变量
- 为局部嵌套函数中的全局变量设置值
- 在全局范围内访问嵌套变量的 Nodejs
- 是 JavaScript 中作为闭包实现的全局/嵌套函数
- 如何在 Ember 应用中实现嵌套全局筛选器
- 嵌套函数和吹走全局变量
- 嵌套类定义,而不创建其他全局对象
- 如何将嵌套的全局或本地jquery变量调用到html中
- 如何将全局状态数据处理到Redux中的深度嵌套组件中
- 有什么办法可以得到“;全局“;使用嵌套iframe时发生的事件
- `这个`in嵌套函数是全局对象
- 嵌套函数是否可以放在Javascript的全局范围内
- 访问全局变量的嵌套成员可能不同
- 为什么我不能读取嵌套函数中全局变量的变化
- 从嵌套的私有函数中设置全局变量
- 无法在Jasmine中的嵌套描述函数中引用全局函数