我需要在执行更改后再次刷新/重新加载我的模型挂钩,例如通过操作添加或编辑我的模态。我已经看过很多类似这样的主题,但是在我的案例中已经弃用或不起作用。
这是我的component.js文件名为“listing.js”:
import Component from '@ember/component';
export default Component.extend({
actions: {
togglePower: function(a){
console.log(a);
var data = new Array();
data.push(a);
$.ajax({
cache:false,
type: 'POST',
url: "/api/device",
data: JSON.stringify(data),
contentType: "application/json"
})
this.get('users.single.households.single.rooms.single.devices.single').send('refresh');
}
}
});
Mirage收到我的数据并能够使用它。但是现在我需要重新加载我的页面以查看我的更改。所以我试着在listing.js中添加最后一行
this.get('users.single.households.single.rooms.single.devices.single').send('refresh');
但这对我不起作用。控制台出现:
TypeError:this.get(...)未定义
这是我的路线:
model(){
...},
actions: {
refresh: function() {
this.refresh();
}
}
> }
答案 0 :(得分:0)
要调用refresh,您必须使用闭包操作。在组件文件中的ajax后,您需要执行
this.get('on-refresh')();
'上刷新'是传递给组件的函数。在这种情况下,它是刷新操作。
{{listing on-refresh=(route-action "refresh")}}
route-action
来自此加载项https://github.com/DockYard/ember-route-action-helper,它允许您直接从模板调用路由操作,而无需通过控制器。
所以我们在这里做的是将刷新函数传递给组件,然后组件在需要时调用它。