Непонятно, почему свойства контроллера, добавленные в init()
, добавляются как 'undefined
', а не по умолчанию. Я предполагаю, что вы должны определить в init()
, чтобы избежать «leaking state»? Я думаю, что мне не хватает чего-то фундаментального здесь.Ember: настройка свойств контроллера в init()?
Когда свойство контроллера, такое как пустой массив, указывается прямо на контроллере, оно добавляется как 'Array[0]
', которое затем позволяет вносить в него pushObject
. При добавлении в init()
они добавляются как 'undefined
', поэтому pushObject
не работает.
Смотрите демо на этом twiddle и/или код ниже:
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['q','sort_method','search_type','filter1','filter2'],
init(){
this._super(...arguments);
Ember.set(this, 'q', null);
Ember.set(this, 'sort_method', 'relevance'); // <-- sets default value to 'undefined'
Ember.set(this, 'filter1', []); // <-- sets default value to 'undefined'
},
filter2: [], // <-- sets default values properly but will it cause state issues?
search_type: 'bar'
});
В принципе, я хотел, чтобы выяснить, как объявить мой список запросов Params в одном месте (например, в конфигурационном файле), а не 3 места (маршрут, контроллер queryParams массив и сам контроллер)
Я создал twiddle, чтобы проиллюстрировать, что я имею в виду.