Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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
Javascript Can';t在模板(EmberJS)中使用相关模型_Javascript_Ember.js_Handlebars.js_Ember Data_Ember Cli Mirage - Fatal编程技术网

Javascript Can';t在模板(EmberJS)中使用相关模型

Javascript Can';t在模板(EmberJS)中使用相关模型,javascript,ember.js,handlebars.js,ember-data,ember-cli-mirage,Javascript,Ember.js,Handlebars.js,Ember Data,Ember Cli Mirage,这就是我所拥有的。 2个型号:“注意”和“用户”。Note有一个名为“user”的字段,该字段使重放成为“1个用户到多个notes”。这些数据来自海市蜃楼 注:型号: export default DS.Model.extend({ subject: DS.attr(), message: DS.attr(), user: DS.belongsTo('user'), created_at: DS.attr(), updated_at: DS.attr(),

这就是我所拥有的。
2个型号:“注意”和“用户”。Note有一个名为“user”的字段,该字段使重放成为“1个用户到多个notes”。这些数据来自海市蜃楼

注:型号:

export default DS.Model.extend({
    subject: DS.attr(),
    message: DS.attr(),
    user: DS.belongsTo('user'),
    created_at: DS.attr(),
    updated_at: DS.attr(),
});
用户模型:

export default DS.Model.extend({
    username: DS.attr(),
    email: DS.attr(),
    notes: DS.hasMany('note'),
});
幻影代码:

let notes = [
    {
        id: 1,
        type: 'note',
        attributes: {
            subject: 'Test 1',
            message: 'tttttttttttttttttttttttt',
            user_id: 1,
            'created-at': '2017-03-10 15:04:22',
            'updated-at': '2017-03-10 15:04:22',
        }
    },
    {
        id: 2,
        type: 'note',
        attributes: {
            subject: 'Test 2',
            message: 'klakljadlfkjhasdflij',
            user_id: 1,
            'created-at': '2017-02-10 15:04:22',
            'updated-at': '2017-02-10 15:04:22',
        }
    }
];

let users = [
    {
        id: 1,
        type: 'user',
        attributes: {
            username: 'user',
            email: 'user@email.com',
        }
    }
];

this.get('/notes/:id', function (db, request) {
    let note = notes.find((note) => parseInt(request.params.id) === note.id);
    let result = {
        data: note
    };
    if (request.queryParams.include === 'user') {
        result.included = [users.find((user) => parseInt(note.attributes.user_id) === user.id)];
    }
    return result;
});
将检索用户模型(如我在EmberInspector上看到的)。
当我在模板内部使用
{{model.user.username}}
时,有空输出。
当我使用
{{log model.user}
时,有一个空的“user”模型

我认为这个问题可能与这样一个事实有关,即在我构建注释列表时,在没有“用户”模型的情况下提前检索了“注释”模型


非常感谢你的帮助

您的问题是使用了
JSONAPISerializer
,但您的响应不符合JSONAPI。JSONAPI预计:

{
    data: {
        id: 1,
        type: 'note',
        attributes: {
            subject: 'Test 1',
            message: 'tttttttttttttttttttttttt',
            'created-at': '2017-03-10 15:04:22',
            'updated-at': '2017-03-10 15:04:22',
        },
        relationships: {
            user: {
                data: {
                    type: 'user'
                    id: '1'
                }
            }
        }
    }
}
然后加载
用户的
id
1

但你的回答是:

{
    data: {
        id: 1,
        type: 'note',
        attributes: {
            subject: 'Test 1',
            message: 'tttttttttttttttttttttttt',
            user_id: 1,
            'created-at': '2017-03-10 15:04:22',
            'updated-at': '2017-03-10 15:04:22',
        }
    }
}

因此
ember data
认为此便笺没有用户。阅读JSONAPI以了解所需的响应。

您使用的是什么序列化程序?@Lux,JSONAPISerializerI不知道这是否重要,但我将尝试使用RESTSerializer作为开发的下一步之一