Задать вопрос
@vovastradamus

Добавление записи к hasMany() в emberjs. Как сделать?

Добрый день.
Не могу понять, как запушить json в определенный объект. Делаю блог с категориями, где в категориях есть поле hasMany().
0MEix.png
В данной картинке писал вручную и это работает.

и вот моя попытка запушить:
var newPost = this.store.createRecord('post', {
	title: this.get('title'),
	body: this.get('body'),
	url_pic: this.get('url_pic'),
	publish: new Date().getTime()
});
var catId = this.get('category');
var postId = newPost.id;
newPost.save();

var addtocat = this.store.push('category', catId.posts, {
    postId : true
});
addtocat.save();
  • Вопрос задан
  • 163 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Kaer_Morchen
@Kaer_Morchen
Разрабатываю web-приложения.
Если вы хотите добавить новый post после его создания в категорию то делайте так:

var newPost = this.store.createRecord('post', {
  title: this.get('title'),
  body: this.get('body'),
  url_pic: this.get('url_pic'),
  publish: new Date().getTime()
});

var _this = this;

newPost.save().then(function(newPost) {
  _this.get('category.posts').pushObject(newPost);
}, function() {
  newPost.rollback();
});


Если нет, то объясните что вы хотите сделать, по коду и картинке это плохо понятно.
Ответ написан
@vovastradamus Автор вопроса
Станислав Романов, извините за поздний ответ, но ваш ответ не помог. Пишет "Cannot read property 'pushObject' of undefined". Т.е насколько я понял, то он не понимает к чему добавлять. Вот еще чуть более подробная информация:
Модель постов:
export default DS.Model.extend({
  title: DS.attr('string'),
  body: DS.attr('string'),
  autor: DS.attr('string'),
  publish: DS.attr('date'),
  url_pic: DS.attr('string')
});

Модель категорий:
export default DS.Model.extend({
	name: DS.attr('string'),
	path: DS.attr('string'),
	posts: DS.hasMany('posts', { async: true })
  	//posts: DS.hasMany('post')
});

Вот само добавление:
export default Ember.Controller.extend({
	actions: {
		publishPost: function() {
			var newPost = this.store.createRecord('post', {
				title: this.get('title'),
				body: this.get('body'),
				url_pic: this.get('url_pic'),
				publish: new Date()
			});

			newPost.save().then(
				function(newPost) {
				_this.get('category.posts').pushObject(newPost);
			}, function() {
				newPost.rollback();
			});
		}
	}
});

Пытался вывести в консоль эту часть с _this.get('category.posts'), выводит просто Id категории куда добавляю, т.е. он видимо модель не видит.
Есть ли еще какие либо предложения? Заранее спасибо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы