Я всегда читал, что Ember отлично работает с POJO вместо Ember Data, но теперь, когда я делаю это, у меня небольшие проблемы.Просмотр не обновляется после нажатия нового POJO ember
Я создаю приложение, использующее NW.js и LinvoDB для базы данных. Извлечение из БД легко и прекрасно работает:
// route/index
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
var gui = require('nw.gui');
var linvoDB = require('linvodb3');
linvoDB.defaults.store = {db: require('medeadown')};
linvoDB.dbPath = gui.App.dataPath;
var File = new linvoDB('file', {});
var Tags = new linvoDB('tag', {});
var media = new Promise(function(resolve, reject) {
var query = File.find().sort({ctime: -1}).live();
File.on('liveQueryUpdate', function() {
resolve(query.res);
});
});
var tags = new Promise(function(resolve, reject) {
var query = Tags.find().sort({name: 1}).live();
Tags.on('liveQueryUpdate', function() {
resolve(query.res);
});
});
return Ember.RSVP.hash({
media: media,
tags: tags
});
}
});
У меня есть простое мероприятие, которое проходит, чтобы создать тег, сохранить его и толкать его в модель:
//controllers/index
actions: {
viewMedia: function(media) {
this.transitionToRoute('media', media)
},
addTag: function() {
var linvoDB = require('linvodb3');
var gui = require('nw.gui');
linvoDB.defaults.store = {db: require('medeadown')};
linvoDB.dbPath = gui.App.dataPath;
var Tag = new linvoDB('tag', {});
var tag = new Tag();
tag.name = this.get('tagName');
tag.save();
this.get('model.tags').push(tag);
}
}
я могу проверить, что тег правильно вставлен в массив тегов в модели, но представление не обновляется. Из того, что я читал, это потому, что я не использую Ember.Object.
Как вы можете это сделать с помощью POJO или мне нужно использовать Ember.Objects? Благодарю.
Да, я подумал об этом, но я получаю сообщение «Uncaught TypeError: undefined is not a function», когда я пытаюсь использовать 'pushObject' вместо' push'. – NicholasJohn16
Тогда звучит так, что расширения прототипов не добавляются должным образом при запуске в nw.js. К счастью, есть решение для этого, измените свой модельный код, чтобы обернуть свой результат в Ember.A(), чтобы получить правильный Ember.Array напрямую, 'Tags.on ('liveQueryUpdate', function() {resolve (Ember .A (query.res));}); ' –
Спасибо. Это подтолкнуло меня в правильном направлении. Я думаю, что мне нужно будет адаптировать Ember Data адаптер, чтобы это действительно работало. – NicholasJohn16