Исходный код ember-data хорошо это объясняет:
// A record enters this state when the store askes
// the adapter for its data. It remains in this state
// until the adapter provides the requested data.
//
// Usually, this process is asynchronous, using an
// XHR to retrieve the data.
loading: DS.State.create({
// TRANSITIONS
exit: function(manager) {
var record = get(manager, 'record');
record.fire('didLoad');
},
// EVENTS
didChangeData: function(manager, data) {
didChangeData(manager);
manager.send('loadedData');
},
loadedData: function(manager) {
manager.goToState('loaded');
}
}),
это означает, что didLoad будет запускаться только тогда, когда запись была загружена через адаптер.
Метод 'find' запрашивает у адаптера данные - он ищет их в пуле доступных на данный момент хэшей данных и в вашем случае находит их, потому что вы уже предоставили их. Однако в других случаях данные, возможно, не существуют локально в браузере, но остаются на сервере, что вызывает запрос ajax в адаптере для их получения.
Таким образом, didLoad в настоящее время работает только в сочетании с адаптером (например, найти)
Но я полностью согласен с вами, что это следует изменить, поскольку запуск 'didLoad' на моделях, которые загружаются vai Store.load, кажется довольно очевидным; -)