Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬不是';Don’不要总是装东西_Ember.js_Ember Data_Rsvp Promise - Fatal编程技术网

Ember.js 余烬不是';Don’不要总是装东西

Ember.js 余烬不是';Don’不要总是装东西,ember.js,ember-data,rsvp-promise,Ember.js,Ember Data,Rsvp Promise,我似乎无法训练如何在Ember中正确加载关系。用户模型只返回部分时间。如果我刷新页面,则该值有50/50的可能为空,或者它将正确解析 我知道在路由中,我返回的承诺是服务器对象(用户关系结束时的belongsTo),但我如何告诉路由在加载页面之前等待加载用户模型,或者如何告诉ember在最终加载用户时更新页面上的数据 我试过在后置模型的钩子里玩RSVP,但没有任何运气。必须有一个明显的解决办法吗 路线 model(param) { return this.store.findRecord('s

我似乎无法训练如何在Ember中正确加载关系。用户模型只返回部分时间。如果我刷新页面,则该值有50/50的可能为空,或者它将正确解析

我知道在路由中,我返回的承诺是服务器对象(用户关系结束时的belongsTo),但我如何告诉路由在加载页面之前等待加载用户模型,或者如何告诉ember在最终加载用户时更新页面上的数据

我试过在后置模型的钩子里玩RSVP,但没有任何运气。必须有一个明显的解决办法吗

路线

model(param) {
  return this.store.findRecord('server', param.server_id);
},
<div class="user-panel">
    <ul class="user-details">
        <li>owner:{{model.user.displayName}}</li>
    </ul>
</div>
{
  "data": {
    "type": "server",
    "id": "578aba694b08ce2310f36798",
    "attributes": {
      //removed
    },
    "relationships": {
      "jobs": {
        "data": [
          {
            "type": "jobs",
            "id": "578aba694b08ce2310f3679a"
          }
        ]
      },
      "user": {
        "data": {
          "type": "user",
          "id": "57760677d04e0f11f4d3f7e5"
        }
      }
    }
  }
}
服务器型号

export default Model.extend(Validations, {
  user: belongsTo('user'),
});
export default Model.extend({   
  displayName: attr('string'),
  servers: hasMany('server'),
});
用户模型

export default Model.extend(Validations, {
  user: belongsTo('user'),
});
export default Model.extend({   
  displayName: attr('string'),
  servers: hasMany('server'),
});
组件

export default Ember.Component.extend({});
组件模板

model(param) {
  return this.store.findRecord('server', param.server_id);
},
<div class="user-panel">
    <ul class="user-details">
        <li>owner:{{model.user.displayName}}</li>
    </ul>
</div>
{
  "data": {
    "type": "server",
    "id": "578aba694b08ce2310f36798",
    "attributes": {
      //removed
    },
    "relationships": {
      "jobs": {
        "data": [
          {
            "type": "jobs",
            "id": "578aba694b08ce2310f3679a"
          }
        ]
      },
      "user": {
        "data": {
          "type": "user",
          "id": "57760677d04e0f11f4d3f7e5"
        }
      }
    }
  }
}

这应该是现成的!不是等待部分,而是自动更新

结帐玩转

但是如果您想等待模型,您可以在
afterModel
hook中强制执行此操作:

afterModel(model) {
  return get(model, 'user');
}

这应该是现成的!不是等待部分,而是自动更新

结帐玩转

但是如果您想等待模型,您可以在
afterModel
hook中强制执行此操作:

afterModel(model) {
  return get(model, 'user');
}

对于密切相关的车型,时机可能很挑剔。如果你能控制API,我建议把用户和服务器一起放在一边。对于密切相关的模型,计时可能会很挑剔。如果你能控制API,我建议将用户和服务器一起加载。是的,我也是这么想的,它最终出现在一个嵌套组件中这一事实与此有关系吗?不太可能。除非你不让模型通过。更有可能是API、序列化程序或适配器有问题。与灰烬检查器一起检查您的状态。通常的问题是,余烬数据认为它已经加载了记录,或者关系不清楚。不幸的是,afterModel挂钩不起作用。使用inspect,我可以看到用户模型
已实现:true
,但
内容
为空。服务器正在返回用户模型,而ember正在发送对数据的请求—看起来时间已经过了,当数据从服务器返回时,ember没有更新其记录。每次使用邮递员查询终结点时,服务器都会正确响应。如果
已完成:true
内容:null
,则服务器响应、序列化程序或适配器出错!与灰烬检查员一起检查。还要检查两个服务器响应。
用户
服务器
.Im使用“开箱即用”序列化程序(我还没有编写)和默认的
JSONAPIAdapter
,只配置了主机。来自服务器的用户响应也是正确的。用户模型有两个
有许多
关系,在这种情况下我需要声明相反的关系吗?是的,我也是这么想的,它最终在一个嵌套组件中的事实是否与此有关?不是真的。除非你不让模型通过。更有可能是API、序列化程序或适配器有问题。与灰烬检查器一起检查您的状态。通常的问题是,余烬数据认为它已经加载了记录,或者关系不清楚。不幸的是,afterModel挂钩不起作用。使用inspect,我可以看到用户模型
已实现:true
,但
内容
为空。服务器正在返回用户模型,而ember正在发送对数据的请求—看起来时间已经过了,当数据从服务器返回时,ember没有更新其记录。每次使用邮递员查询终结点时,服务器都会正确响应。如果
已完成:true
内容:null
,则服务器响应、序列化程序或适配器出错!与灰烬检查员一起检查。还要检查两个服务器响应。
用户
服务器
.Im使用“开箱即用”序列化程序(我还没有编写)和默认的
JSONAPIAdapter
,只配置了主机。来自服务器的用户响应也是正确的。用户模型有两个
有许多
关系,在这种情况下我需要声明相反的关系吗?