很抱歉,如果这个问题太天真,但我对Ember中的渲染视图感到很困惑。
我有一个' Person'路线。我可以对它进行CRUD操作。
router.js
this.route('person', function() {
this.route('index', { path: '' });
});
控制器/人/ index.js
actions: {
createPerson: function() {
var person = this.get('store').createRecord('person');
this.set('person', person);
this.set('editPersonPane', true);
},
editPerson: function(person) {
this.set('person', person);
this.set('editPersonPane', true);
},
closeEditPerson: function() {
this.get('person').rollback();
this.set('editPersonPane', false);
},
savePerson: function(person) {
var _this = this;
person.save().then(function() {
_this.set('editPersonPane', false);
Ember.get(_this, 'flashMessages').success('person.flash.personUpdateSuccessful');
}, function() {
Ember.get(_this, 'flashMessages').danger('apiFailure');
});
},
deletePerson: function(person) {
var _this = this;
person.destroyRecord().then(function() {
_this.set('editPersonPane', false);
Ember.get(_this, 'flashMessages').success('person.flash.personDeleteSuccessful');
}, function() {
Ember.get(_this, 'flashMessages').danger('apiFailure');
});
}
}
我现在想要做的是当我想要创建一个新人时,一个表格滑入以创建它。填写表单后,我希望立即更新人员列表视图,而无需刷新页面。现在,我已经能够添加表单,当我添加一个新人时,我得到一个成功的flash消息,但它没有在视图中立即更新。我必须刷新页面。
它可能需要与观察者做点什么,但我仍然不确定如何。
答案 0 :(得分:1)
重新加载已保存的对象可以避免刷新页面:
savePerson: function(person) {
var _this = this;
person.save().then(function(saved) {
saved.reload();
_this.set('editPersonPane', false);
Ember.get(_this, 'flashMessages').success('person.flash.personUpdateSuccessful');
}, function() {
Ember.get(_this, 'flashMessages').danger('apiFailure');
});
}
此外,值得注意的是,如果您构造并使用ES6语法,您可以按如下方式清理代码:
//controllers/person/index.js
//at the top of the file
import Ember from 'ember';
const { get, set } = Ember;
//other code
actions: {
//other actions
savePerson(person): {
person.save().then((saved) => {
saved.reload();
set(this, 'editPersonPane', false);
get(this, 'flashMessages').success('person.flash.personUpdateSuccessful');
}, () {
get(this, 'flashMessages').danger('apiFailure');
});
}
}
答案 1 :(得分:0)
哪条路线显示您的人员名单?
这样的东西不会更好用,所以你可以显示列表然后在persons.hbs插座中编辑一个人吗?
public PortletPreferences getStrictLayoutPortletSetup(Layout layout, String portletId) {
long ownerId = PortletKeys.PREFS_OWNER_ID_DEFAULT;
int ownerType = PortletKeys.PREFS_OWNER_TYPE_LAYOUT;
if (PortletConstants.hasUserId(portletId)) {
ownerId = PortletConstants.getUserId(portletId);
ownerType = PortletKeys.PREFS_OWNER_TYPE_USER;
}
...