ember.js更改模型时重置路径变量

时间:2015-10-11 18:30:28

标签: ember.js ember-cli

我正在使用Ruby on Rails 5创建一些CRUD Ember.js 2.1.0 / Ember-data 2.1.0。

我有contactscontacts/show路线

当我点击列表中的某个项目时,当前路线会更改为contacts/show路线。

contacts/showisEdit变量用于内联编辑。 但是我希望当我点击另一个项目时会重置isEdit

在beforeModel,afterModel和setupController之后检查我的控制台,我的所有测试吐出false。但它与isEdit和模板无关。

我单击编辑按钮isEdit已更改true

<p>
{{#if isEdit}}
<button {{action "save"}}>SAVE</button>
<button {{action "cancel"}}>CANCEL</button>
{{else}}
<button {{action "edit"}}>EDIT</button>
{{/if}}
</p>

我的联系人/显示模板

        save: function() {
        var controller = this.controller;
        var item = controller.get('model');
        if(!item.get('title') || item.get('title') === '') {
            item.rollbackAttributes();
            controller.set('isEdit', false);
        } else {            
            item.save();
            controller.set('isEdit', false);            
        }
    },

它运作良好,但我无法在加载的新模型上获得'假'

当我更改相同的路线和不同的模型时,我如何设置isEdit false

1 个答案:

答案 0 :(得分:0)

根据我的经验,这样做的最佳位置是进入路线时,在setupController挂钩中设置值。这将确保您每次导航到isEdit时都会设置为false

以下是代码示例:

app/routes/contacts/show.js

import Ember from 'ember';

const { set } = Ember;

export default Ember.Route.extend({
  setupController(controller) {
    set(controller, 'isEdit', false);
  }
});