Gibt es eine einfache Möglichkeit, Controller-Eigenschaften direkt aus einem Javascript-Objekt hinzuzufügen?Ember: ganzes Objekt zum Controller hinzufügen
Im Gegensatz zu müssen jeden Abfrageparam manuell an drei Stellen angeben: queryParams, QP-Controller-Eigenschaften und Route queryParams [Schlüssel] .refreshModel = true ... Ich möchte nur dieses Zeug zu pflegen in einem Objekt und aktualisieren sie es an all diesen Orten:
const cfg = {
defaultQueryParams: {
q: null,
paging: '18',
search_sort: 'relevance',
search_title: null,
search_page: null,
filter_breadcrumb: [],
filter_price: [],
filter_size_apparel: [],
filter_color: []
}
};
in der Steuerung ich habe versucht:
export default Ember.Controller.extend({
queryParams: Object.keys(cfg.defaultQueryParams), // works great!
init() {
this._super(...arguments);
this.addObject(cfg.defaultQueryParams); // doesn't work: "this.addObjects is not a function"
// same with addObjects, setObjects
},
...
});
ich habe auch versucht, über das JS-Objekt iteriert und die Setter verwenden. Es funktioniert für Streicher, aber nicht für die leeren Felder:
for (let [key, value] of Object.entries(cfg.defaultQueryParams)) {
this.set(key, value);
}
Die Arrays werden als Eigenschaften hinzugefügt, aber in der Konsole nicht definiert sind, anstatt Array [0]
Bin ich weg Basis zu wollen tun das oder willst du es so machen?
Gehen Sie einfach! Ember newb! : D
„Die Arrays als Eigenschaften hinzugefügt werden, aber in der Konsole statt Array nicht definiert ist [0]“. Wie überprüfen Sie das? – nem035
console.log (dies); aus einer meiner Controller-Aktionen heraus. Ich kann die Klasse in der Konsole erweitern und sehe es sagt "filter_breadcrumb: undefined" Wenn ich stattdessen filter_breadcrumb: [], ... direkt auf den Controller hinzufügen und dasselbe tun, sehe ich: filter_breadcrumb: Array [0] – tarponjargon
Haben Sie darüber nachgedacht ein Mixin verwenden? – Lux