2013-05-05 2 views
2

Для простого обзорного экрана у меня разработан маршрут, который устанавливает контроллер, который выполняет App.Location.find().Модель EmberJS не актуальна с базовым магазином

App.LocationsIndexRoute = Ember.Route.extend({ 

    setupController: function(controller) { 
    controller.set('content', App.Location.find()); 
    }, 

    renderTemplate: function() { 
    this.render('locations.index',{into:'application'}); 
    } 

}); 

я наивно полагал, что это будет просто пойти в магазин и принести мне все записи, давая мне последнюю дату вид записи.

Видимо не ....

  • Когда внешний процесс начинается удаление записей из базы данных, App.Location.find() продолжает возвращения этих удаленных записей. (хотя звонок REST больше не отображает их)
  • Если внешний процесс начинает добавлять записи в базу данных, то App.Location.find() подбирает их.
  • Если я удалю запись формы в самом приложении Ember, модель будет правильно обновлена.

Как я должен иметь дело с этим в своем приложении Ember? Я хотел бы иметь обновленное представление о том, что находится в моей базе данных. Сейчас мне нужно обновить страницу (F5), чтобы получить актуальное представление. Использование помощников linkTo показывает мне устаревшие данные.

Это, кажется, еще одна тривиальная вещь, которую я полностью пропустил в EmberJS. Это где-то упоминается в документах, почему оно ведет себя так? Я думаю, что за этим поведением существует верная философия.

Мои обзорные экраны просто заинтересованы в отображении самых современных данных. Если запись больше не находится в БД, модель больше не должна ее возвращать.

Я добавил sample project in Github, у которого возникли проблемы.

+0

Вы столкнулись с подобной проблемой, это вопрос http://stackoverflow.com/questions/16268434/emberjs-crud-deletedrecord-keeps-re-appearing-after-linkto/16326087#16326087 связанный? – intuitivepixel

+0

no ... в другом сообщении упоминается проблема с устаревшими данными, когда удаление было выполнено внутри самого приложения (deleteRecord, вызываемый в модели). Это было решено с помощью последних ember.js и ember-data.js. Описанная здесь проблема говорит об удалении записи из БД вне приложения EmberJS. – ddewaele

ответ

0

Вы пытались App.Location.query() вместо App.Location.find()?

+0

Кажется, что это работает, так как теперь он замечает удаленные записи, когда я возвращаюсь к обзорному экрану, однако все мои действия на обзорном экране (добавление/удаление записей) больше не работают. (Я обновил вопрос с моим проектом github, который испытывает проблему). – ddewaele

2

Попробуйте разгрузки все данные из хранилища перед вызовом находку():

this.store.unloadAll('widget'); 
this.store.find('widget'); 

Это будет полностью обновить ваш магазин, чтобы отразить то, что на вашем сервере.

+0

Это то, что я закончил делать, столкнувшись с проблемой tis. Теперь моя проблема заключается в том, что я не могу найти способ обновить текущий визуализированный шаблон. Разве нет никакого способа в Ember просто перерисовать шаблон на основе новых данных? this.transitionTo не работает для одного и того же шаблона, this.set ('model') не перерисовывает. Любая подсказка? – Jim

+0

@Jim, вы пробовали Ember.run()? http://emberjs.com/api/classes/Ember.run.html –

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