@Joshua_Jenkins wrote:
I’m trying to pass filter values to an input component and have the query params update in real time.
I don’t understand how to link the input changes to the query params. The input is initialized from the current params.
Do I need to use an input action to manually update the param each time?
I’m having trouble thinking through this any further. Help much appreciated.
url: https://xxxx.com?search=yellow&price=1000to5000&year=1995to (params can be search or a range of values seperated by ‘to’)
Controller:
class MinMaxValue { @tracked min; @tracked max; constructor(param) { const minMax = param.split('to'); this.min = minMax[0]; this.max = minMax.length === 2 ? minMax[1] : ''; } get param() { const param = `${this.min}to${this.max}` return param === 'to' ? '' : param; } } // Holds the filters class Filter { @tracked search; @tracked price; constructor(search, price, year) { this.search = search; this.price = new MinMaxValue(price); } } export default class ListingController extends Controller { queryParams = ['search', 'price']; search = ''; price = ''; @tracked filter = new Filter(this.search, this.price); }
Component:
<Input @value={{@filter.search}} /> <Input @value={{@filter.price.min}} /> <Input @value={{@filter.price.max}} />
Doing something like the following gets into an infinite loop:
@computed('filter.price.param') get price() { return this.filter.price.param; }
A plain getter doesn’t update?
Posts: 1
Participants: 1