在海市蜃楼中更改数据后的余烬刷新/重装模型

时间:2017-12-17 10:33:53

标签: javascript ember.js ember-data ember-cli

我需要在执行更改后再次刷新/重新加载我的模型挂钩,例如通过操作添加或编辑我的模态。我已经看过很多类似这样的主题,但是在我的案例中已经弃用或不起作用。

这是我的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();
              }
            }

>     }

1 个答案:

答案 0 :(得分:0)

要调用refresh,您必须使用闭包操作。在组件文件中的ajax后,您需要执行

this.get('on-refresh')();

'上刷新'是传递给组件的函数。在这种情况下,它是刷新操作。

{{listing on-refresh=(route-action "refresh")}}

route-action来自此加载项https://github.com/DockYard/ember-route-action-helper,它允许您直接从模板调用路由操作,而无需通过控制器。

所以我们在这里做的是将刷新函数传递给组件,然后组件在需要时调用它。