Ember.js 如何让ember保留编辑的模型更改以跨管线保存?

Ember.js 如何让ember保留编辑的模型更改以跨管线保存?,ember.js,ember-data,Ember.js,Ember Data,我有一个fiddle()和一个简单的编辑保存应用程序: <script type="text/x-handlebars"> {{outlet}} </script> <script type="text/x-handlebars" id="profile/edit"> Edit. <form {{action 'save' on="submit"}}> <div> <

我有一个fiddle()和一个简单的编辑保存应用程序:

<script type="text/x-handlebars">
    {{outlet}}
</script>
<script type="text/x-handlebars" id="profile/edit">
    Edit.
    <form {{action 'save' on="submit"}}>
        <div>
            <input type="email" {{bind-attr value="email"}}>
        </div>
        <button>Save</button>
    </form>
</script>
<script type="text/x-handlebars" id="profile/index">
    {{#link-to 'profile.edit'}}Edit{{/link-to}}
    {{email}}
</script>
window.App = Ember.Application.create();

App.ApplicationAdapter = DS.FixtureAdapter.extend();

App.Router.map(function () {
    this.resource('profile', {path: '/'}, function(){
        this.route('edit');
    });
});


App.ProfileRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('user').then(function(users){
      return users.get('firstObject');
    });
  }
});

App.ProfileEditRoute = App.ProfileRoute;

App.ProfileEditController = Ember.ObjectController.extend({
    actions: {
        save: function(){
            var profile = this.get('model');
            profile.setProperties({email: this.get('email')});
            profile.save();
            this.transitionTo('profile');
        }
    }
});

App.User = DS.Model.extend({
    email: DS.attr('string')
});

App.User.FIXTURES = [
    {
        id: 1,
        email: 'herpyderp@gmail.com'
    }
];
当我点击save并返回到
profile/index
时,它没有更新的模型,当我返回到
profile/edit
时,编辑不在那里。我意识到我可以使用
{{input value=email}}
,它似乎记住了模型的更改,但似乎在我键入时保留了对模型的更改,这不是我想要的


我遗漏了什么?

save方法返回一个承诺,当承诺被解析为:

var route = this;
profile.save().then(function() {
  route.transitionTo('profile');
}, function() {
  // TODO: implement error logic
});

在这种情况下,当应用程序返回到索引状态时,您的方法将被更新。

我对其进行了2次更改。首先,因为我抓取的是
this.get('email')
我得到的是模型的电子邮件地址,而不是输入字段中的地址,所以它实际上从未更新数据

<script type="text/x-handlebars">
    {{outlet}}
</script>
<script type="text/x-handlebars" id="profile/edit">
    Edit.
    <form {{action 'save' on="submit"}}>
        <div>
            {{input value=email}}
        </div>
        <button>Save</button>
    </form>
    {{#link-to 'profile'}}Back{{/link-to}}
</script>
<script type="text/x-handlebars" id="profile/index">
    {{#link-to 'profile.edit'}}Edit{{/link-to}}
    {{email}}
</script>
更新小提琴:

window.App = Ember.Application.create();

App.ApplicationAdapter = DS.FixtureAdapter.extend();

App.Router.map(function () {
    this.resource('profile', {path: '/'}, function(){
        this.route('edit');
    });
});

App.ProfileRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('user').then(function(users){
      return users.get('firstObject');
    });
  }
});

App.ProfileEditRoute = App.ProfileRoute.extend({
    deactivate: function(){
        var model = this.modelFor('profile');
        if(model.get('isDirty') && !model.get('isSaving')){
          model.rollback();
        }
    },
    actions: {
        save: function(){
            this.modelFor('profile').save();
            this.transitionTo('profile');
        }
    }
});

App.User = DS.Model.extend({
    email: DS.attr('string')
});

App.User.FIXTURES = [
    {
        id: 1,
        email: 'herpyderp@gmail.com'
    }
];