Я новичок в Ember, поэтому мой подход может быть неправильным. Я использую последнюю версию Ember 2.9.1Emberjs 2.0+ обновить модель маршрута с новыми данными из магазина (createRecord)
Мой план состоит в том, чтобы обновить модель маршрута и заставить все компоненты визуализировать вновь добавленный/сохраненный элемент в коллекции.
(Я хочу, чтобы обновить модель моего маршрута (UserRoles массив) с новым рекордом UserRole после того как я называю СОХРАНИТЬ (на createRecord)).
До сих пор у меня есть маршрут, который имеет модель так:
model(){
// this is my "user.edit" route
let user = this.modelFor('user');
let newUserRole = this.get('store').createRecord('userRole');
newUserRole.set('user_id', user.get('id'));
return RSVP.hash({
user: user,
userRoles: store.query('userRole', { user_id: user.get('id') }),
roles: store.findAll('role'),
newUserRole: newUserRole
});
}
Я тогда контроллер и несколько компонентов, которые модифицируют newUserRole. В пути у меня есть действие для сохранения новой роли пользователя:
actions: {
saveNewUserRole: function() {
let currentModel = this.modelFor('user.edit');
currentModel.newUserRole.save().then(function (newUserRole) {
currentModel.userRoles.addObject(newUserRole);
});
}
}
Что интересно, что новый товар (newUserRole) добавляется в коллекцию, но в консоли протоколирование модели говорит мне о том, что новый объект в отличие от других объектов в коллекции. Просматривая аналогичные вопросы для уголька Я считаю, что люди используют: _internalModel или ToArray(): (?) here и here или услуги для хранения/обновления данных.
(также изменен с помощью pushObject в AddObject (v1.3 +), а также наблюдатели прислушиваясь UserRoles изменения не получают сработавших внутри компонентов, или если я позвоню ToArray() I get 'Недопустимое значение, используемое как ошибка слабой карты ")
Вопрос: Каков правильный/Яркий способ обновить модель моего маршрута новым элементом и вызвать повторный рендеринг моего шаблона. Если я должен использовать службы для данных, должен ли сервис хранить все элементы в toArray()
или POJO?
Большое спасибо за этот ответ. Таким образом, я пытаюсь настроить страницу прямо сейчас. Однако я не могу сделать «user.get (« role »)« вызов, чтобы на самом деле сделать запрос на сервер. – GogromaT
... или, вернее, мне нужно вернуть идентификаторы роли как часть вызова пользователю? Я использую REST Adapter, и если я не верну {role: [role_ids]} как часть пользователя, ember не будет делать отдельный запрос (ы) для данных – GogromaT
, вы должны [указать ссылку] (http: //emberjs.com/api/data/classes/DS.RESTAdapter.html#method_findBelongsTo). – Lux