2013-11-13 2 views
2

У меня есть «новый» действия в качестве компонента (Ember.Component), который имеет следующий код в нем:TypeError: «не определено» не является объектом (оценка «store.createRecord»)

var store = this.get('store'); 
store.createRecord('child'); 

пока я получаю следующее сообщение об ошибке:

TypeError: 'undefined' is not an object (evaluating 'store.createRecord') 

единственный способ, которым я был в состоянии продолжить это, чтобы найти родительский объект (всегда должен быть установлен в компоненте) с помощью:

store = this.get('parent.store'); 

, а затем продолжить вызов createRecord сверху. Является ли это «нормальным» способом?

+0

Можете ли вы отобразить еще какой-нибудь код? где вы это делаете, очень важно! – iConnor

ответ

1

Хранилище не существует внутри компонента, поэтому вам нужно передать его в компонент, или вы должны получить его от какого-либо родительского контроллера (или переданного в контроллер).

Via Ember данных Transition документ (https://github.com/emberjs/data/blob/master/TRANSITION.md)

In general, looking up models directly in a component is an anti-pattern, and you should prefer to pass in any model you need in the template that included the component.

Плохая часть об этом, вы добавляете зависимость к данным Ember в компоненте, который должен быть агностиком от внешнего мира.

+0

Okey dokey. Это то, о чем я думал. Благодарю. Таким образом, так, как я это делал, это был «правильный» способ сделать это :) Cool. –

+0

* Плохая часть об этом, вы добавляете зависимость от данных ember в своем компоненте, который должен быть агностиком внешнего мира. * Да, я в процессе переработки вещей, так что они не так уж и зависит от модельного слоя. –

+0

Своеобразно, но я прочитал этот переходный документ примерно 50 раз. Не могу поверить, что я этого не помнил. :) –

Смежные вопросы