我是新来的烬,我正在创建一个搜索过滤应用程序。我有我的搜索过滤器“桶”设置为控制器属性,它们很好地绑定到查询参数。Ember:计算属性(对象)不在视图中更新
我正在创建一个“您选择的过滤器”组件,该组件总结了用户当前活动的过滤器。我在想也许一个计算属性是这样做的方式?在我的控制,我创建一个名为selectedFilters
:
export default Ember.Controller.extend(utils, {
queryParams: ['filter_breadcrumb','filter_price','filter_size_apparel','filter_color'],
filter_breadcrumb: [],
filter_price: [],
filter_size_apparel: [],
filter_color: [],
selectedFilters: Ember.computed('this{filter_breadcrumb,filter_price,filter_size_apparel,filter_color}', function() {
let filterContainer = {};
for (let bucket of this.queryParams) {
let bucketArray = this.get(bucket);
if (bucketArray.length > 0) { // only add if bucket has values
filterContainer[bucket] = {
'title' : cfg.filterTitles[bucket], // a "pretty name" hash
'values' : bucketArray
};
}
}
return filterContainer;
})
});
的selectedFilters
的内容将是这个样子,当用户选择过滤器:
{
filter_breadcrumb: { title: 'Category', values: [ 'Home > Stuff', 'Garage > More Stuff' ] },
filter_price: { title: 'Price', values: [ '*-20.0' ] },
filter_color: { title: 'Color', values: [ 'Black', 'Green' ] }
}
然后模板将是:
<h1>Selected Filters</h1>
{{#each-in selectedFilters as |selectedFilter selectedValues|}}
{{#each selectedValues.values as |selectedValue|}}
<strong>{{selectedValues.title}}</strong>: {{selectedValue}} <br>
{{/each}}
{{/each-in}}
这实际上有效(种)。当添加和删除过滤器时,视图不会更新。当我刷新页面时,它们确实显示出来。我想知道为什么他们不更新,即使selectedFilters
的“输入”属性呢?
我在想,要么我做错了,或许还有更好的方法来做到这一点。任何帮助感谢!
有趣。非常感谢您花时间回答。我学到了很多! – tarponjargon