ember.js Ember -在Template.hbs上显示API响应数据

ftf50wuq  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(181)

我对Ember非常陌生-如果有人能提供帮助,我将不胜感激。我需要显示网络请求响应:
这是我的port路线:

import Route from '@ember/routing/route';

export default Route.extend({
    model(params) {
        this.store.findRecord('node', params.node_id).then((res) => {
            var port = res.ports.arrangedContent.currentState;
            console.log(port);
            return port;      
        });
    }
});

以下是端口模型:

import DS from 'ember-data';

var ports = {
    label: DS.attr('string'),
    mode: DS.attr('string'),
    node_name: DS.attr('string'),
    port_csid: DS.attr('string'),
    proxied_ssh_url: DS.attr('string'),
    web_terminal_url: DS.attr('string'),
    runtime_status: DS.belongsTo('nodeRuntimeStatus', {async: false}),
    parent: DS.belongsTo('node', {async: false}),
};

export default DS.Model.extend(ports);

以下是模板:

{{#each item in model}}
    <span>
       {{item.label}}
    </span>
{{/each}}

API调用发生,我可以console.log端口(阵列),但不确定为什么我没有得到任何显示。

aiqt4smr

aiqt4smr1#

所以我发现了问题所在。
首先,正如Lux提到的,我在我的model()中缺少了一个return
第二个问题是each助手。我将模板从{{#each item in model}}更改为{{#each model as |item|}},并解决了这个问题

wwwo4jvm

wwwo4jvm2#

您的model()挂钩中缺少一个return。因此,您应该执行以下操作:

model(params) {
    return this.store.findRecord('node', params.node_id).then((res) => {
        var port = res.ports.arrangedContent.currentState;
        console.log(port);
        return port;      
    });
}

相关问题