2016-11-30 6 views
0

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

Think TODO приложение, где вы хотите, чтобы продолжать добавлять новые задачи:

У меня есть очень простой маршрут, который позволяет экономить правильно, но не обновляется внешний интерфейс с новой моделью

model() { 
    return RSVP.hash({ 
     distro: get(this, 'store').createRecord('distro'), 
    }); 
    }, 

    setupController(controller, models) { 
    controller.setProperties(models); 
    }, 

    actions: { 
    saveDistro(distro) { 
     let newDistro = get(this, 'store').createRecord('distro'); 

     distro.save().then(() => { 
     set(this, 'distro', newDistro); 
     }); 
    }, 
    } 

I Думаю, я просто пропустил здесь очевидное?

+0

Что именно вы подразумеваете под «не может создать»? – Serge

ответ

0

Здесь вы создаете 2 разных distros. Первый - это то, что передается вашему контроллеру для отображения, а второй - тот, который создан в действии saveDistro().

Как правило, вы не хотите создавать новую запись в крюке model(). Это предназначено для поиска данных. Так как я не уверен, что вы делаете в контроллере и посмотреть с первым дистрибутивом, я не могу комментировать, но я бы рекомендовал что-то вроде этого:

EDIT:

// Controller 
init() { 
    this._super(...arguments) 
    this.set('formAttrs', { 
    attr1: null, 
    attr2: null 
    // ... 
    }) 
}, 

actions: { 
    saveDistro() { 
    const attrs = this.get('formAttrs') 
    this.send('saveDistro', attrs) 
    } 
} 

// Model 
actions: { 
    saveDistro(attrs) { 
    let newDistro = get(this, 'store').createRecord('distro', attrs); 

    distro.save().then(() => { 
     // transition to new distro route 
    }); 
    } 
} 
+0

Спасибо за ответ, это простой «создать новый» маршрут, поэтому я не думаю, что хочу получать все текущие дистрибутивы? Но мне нужна модель для сохранения данных, поэтому создаем ее на крючке модели –

+0

gotcha. Вам не нужна модель для создания формы для сохранения данных. На самом деле я призываю вас не делать этого. Вместо этого в вашем контроллере создайте объект attrs формы для хранения значений, а затем используйте значения для создания нового 'distro' в действии – xcskier56

+0

Я обновил ответ, чтобы отразить то, что я говорю о – xcskier56