我是新來的燼,我正在創建一個搜索過濾應用程序。我有我的搜索過濾器「桶」設置爲控制器屬性,它們很好地綁定到查詢參數。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