我正在使用ember的查询参数来按一种布局过滤结果列表。我想检查指定的查询是否在availableLayouts中。我知道我可以检查值是否在这个数组中,但我不确定ember在什么时候设置“layout”参数。是否有一个方法或操作被调用,我可以覆盖set调用以确保它存在于availableLayouts中?
queryParams: ['filter', 'layout']
layout: 'grid'
availableLayouts: ['grid', 'list']
答案 0 :(得分:2)
您可以使用计算属性来完成您想要的任务。
您可以执行类似
的操作 queryParams: ['filter', 'layout'],
layout: 'grid',
availableLayouts: ['grid', 'list'],
isLayoutAvailable: function(){
var layout = this.get('layout');
var availableLayouts = this.get('availableLayouts');
return availableLayouts.contains(layout);
}.property('layout', 'availableLayouts.[]')
会创建一个isLayoutAvailable
属性,如果布局位于availableLayouts数组中,该属性会自动更新
你可以在这里看到一个工作箱:http://emberjs.jsbin.com/gaker/1/edit?html,js,output