我正在使用Ruby on Rails 5创建一些CRUD Ember.js 2.1.0 / Ember-data 2.1.0。
我有contacts
和contacts/show
路线
当我点击列表中的某个项目时,当前路线会更改为contacts/show
路线。
和contacts/show
有isEdit
变量用于内联编辑。
但是我希望当我点击另一个项目时会重置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
?
答案 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);
}
});