2013-11-10 3 views
0

im, играющий с набором для запуска ember starter bloggr, чтобы ознакомиться с его материалами.Создайте новый предмет в Ember

Jsbin

В разделе сообщений я хочу, чтобы иметь возможность создать новый пост. Это соответствующие изменения в соответствии с исходным кодом.

App.PostsRoute = Ember.Route.extend({ model: function() { 
return posts; }, 
events: { 
    createPost: function(){ 
    var posts = this.modelFor('posts'); 
    var post = posts.pushObject({ 
     id: posts.length 
    }); 
    this.transitionTo('/edit', post); 
    }  
}}); 

и событие увольняют, когда

<tr><th><a href="#" {{action createPost}}>New Post</a></th></tr> 
<tr><th>Recent Posts</th></tr> 

Если вы пытаетесь создать новый пост, есть явно новый экземпляр сообщений (0 и 1 являются жёстко, так что вы получите сообщение ID = 2) но шаблон редактирования не отображается. Единственный способ сделать что-то - сначала загрузить пост 0 или 1, а затем щелкнуть по новому (только видимый «от») и отредактировать его.

То, что я хотел бы получить, - это получить новый новый экземпляр редактирования шаблона, чтобы я мог устанавливать поля для вновь созданного сообщения.

Любое предложение?

ответ

2

G'day Daniel

Держи это jsbin работает.

Чтобы получить эту работу я добавил Ember Data и адаптер арматуры

App.ApplicationAdapter = DS.FixtureAdapter; 

Тогда я обратился к сообщению объекта, который пришел с примером в данную арматуре.

App.Post.FIXTURES = [{ 
title: "Rails is Omakase" 
}, { 
title: "The Parley Letter" 
}]; 

Дальше Я добавляю новый маршрут сообщений.

App.Router.map(function() { 
this.resource('about'); 
this.resource('posts', function() { 
    this.route('new'); 
    this.resource('post', { path: ':post_id' }); 
}); 
}); 

Затем добавили ссылку на этот новый маршрут.

{{#link-to 'posts.new'}}New Post{{/link-to}} 

В PostsNewRoute модели крючка я создающий а 'пост'. Шаблон использует {{partial 'post/edit'}} для повторного использования формы редактирования.

Вот код PostsNewRoute, показывающий действие сохранения.

App.PostsNewRoute = Ember.Route.extend({ 
    model: function() { 
     return this.get('store').createRecord('post'); 
    }, 
    actions: { 
     save: function() { 
     this.modelFor('postsNew').save(); 
     this.transitionTo('posts.index'); 
     } 
    } 
    }); 

Если у вас есть еще вопросы, сообщите мне.

Cheers

+0

спасибо большое! и на вопрос ответили, но я хотел бы спросить вас о чем-то другом. С добавлением, которое вы сделали, новые сообщения получают маршрут, например 'posts/fixture-0', а hardcoded array - как' posts/0' и т. Д. Есть ли способ исправить это? Во-вторых, можем ли мы запустить «сохранить» действие с помощью кнопки «done», а не с помощью другой кнопки? Я понял, что вы изменили '.commit()' для '.save()'. Если у вас нет времени, это нормально, так как я сказал, что вам удалось решить проблему! Еще раз спасибо. –

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