Я создаю приложение с макетом, как показано ниже.
Я хочу создать новое сообщение, поэтому я нажал кнопку "Создать сообщение", и он перешел на маршрут "сообщения/новые".
Мои сообщенияNewRoute, как показано ниже (я следовал описанному методу здесь)
App.PostsNewRoute = Ember.Route.extend({
model: function() {
// create a separate transaction,
var transaction = this.get('store').transaction();
// create a record using that transaction
var post = transaction.createRecord(App.Post, {
title: 'default placeholder title',
body: 'default placeholder body'
});
return post;
}
});
Он немедленно создает новую запись, обновляет список сообщений и отображает формы для нового сообщения.
(источник: sunshineunderground.kr)
Теперь у меня две проблемы.
Одним из них является порядок списка сообщений.
Я ожидал, что новое сообщение будет в верхней части списка, но оно будет в нижней части списка.
Я использую рельсы в качестве моего бэкэнда, и я установил порядок модели Post на
default_scope order('created_at DESC')
такая старая запись находится ниже существующих записей. но недавно созданный не является. (который еще не предназначен для бэкэнда)
Другой - Когда я нажимаю на созданную запись в списке
Я могу нажать на свой недавно созданный пост в списке постов. и он взял меня на страницу поста с URL
/posts/null
и это очень странное поведение, которое я должен предотвратить.
Я думаю, что будет два решения.
Когда я нажимаю "кнопку нового сообщения", немедленно создаю запись и фиксирую на сервере, а когда сервер успешно сохранил мою новую запись, обновите список сообщений и войдите в режим редактирования вновь созданного сообщения.
или изначально установите для модели маршрута значение null и создайте запись, когда я нажму кнопку "отправить" в PostsNewView.
или показывать только те сообщения, атрибут которых
'isNew' = false, 'isDirty' = false,
в списке..
Но, к сожалению, я не знаю, с чего начать...
для решения 1 я полностью теряюсь.
для решения 2 я не знаю, как связать данные в формах ввода с еще не существующей моделью.
для решения 3 я полностью теряюсь.
Пожалуйста, помогите мне! какой будет angularьный путь?
(Я слышал, что Ember намеревается использовать одно и то же решение для каждого разработчика)
Обновление
Сейчас я использую решение 3 и все еще имею проблему с заказом. Вот мой код шаблона сообщений.
<div class="tools">
{{#linkTo posts.new }}new post button{{/linkTo}}
</div>
<ul class="post-list">
{{#each post in filteredContent}}
<li>
{{#linkTo post post }}
<h3>{{ post.title }}</h3>
<p class="date">2013/01/13</p>
<div class="arrow"></div>
{{/linkTo}}
</li>
{{/each}}
</ul>
{{outlet}}
Обновление
Я решил эту проблему, отфильтровав "aniContent ", а не" content "
App.PostsController = Ember.ArrayController.extend({
sortProperties: ['id'],
sortAscending: false,
filteredContent: (function() {
var content = this.get('arrangedContent');
return content.filter(function(item, index) {
return !(item.get('isDirty'));
});
}).property('[email protected]')
});