gpt4 book ai didi

javascript - ember-data hasMany 关系使用 json

转载 作者:行者123 更新时间:2023-11-30 17:42:47 25 4
gpt4 key购买 nike

我正在尝试使用 ember-data hasMany 关系,以便我的作者链接可以复制所有作者,当您单击特定作者时,该页面还会提供指向他的书的链接。单击特定书籍时,它会提供指向其作者的链接。它与固定装置配合得很好,但 ajax 调用出了点问题。非常感谢您的帮助。

我的 app.js:

App = Ember.Application.create({});


App.Store = DS.Store.extend({
adapter: DS.RESTAdapter.extend()
});

App.Author = DS.Model.extend({
name: DS.attr('string'),
biography: DS.attr('string'),
book_ids: DS.hasMany('book', { async: true })
});

App.Book = DS.Model.extend({
name: DS.attr('string'),
description: DS.attr('string'),
image: DS.attr('string'),
author_ids: DS.hasMany('author', { async: true })
});




App.Router.map(function() {
this.resource('about');
this.resource('books', function() {
this.resource('book', { path: '/:book_id' });
});
this.resource('authors', function() {
this.resource('author', { path: '/:author_id' });
});
});

App.BooksRoute = Ember.Route.extend({
model: function() {
return App.Book.findAll();
}
});

App.Book = Ember.Object.extend();

App.Book.reopenClass({
findAll: function() {
return $.getJSON('/json/books.json').then(function(response) {

var books=[];

response.book.forEach( function (book) {
books.push( App.Book.create(book) );
});
return books;
});
}
});

App.AuthorsRoute = Ember.Route.extend({
model: function() {
return App.Author.findAll();
}
});

App.Author = Ember.Object.extend();

App.Author.reopenClass({
findAll: function() {
return $.getJSON('/json/authors.json').then(function(response) {

var authors=[];

response.author.forEach( function (author) {
authors.push( App.Author.create(author) );
});
return authors;
});
}
});

json中的数据是这样表示的:

{
"author": [
{
"id": 1,
"name": "James Joyce",
"biography": "<p><b>James Joyce</b> <small>(February 2, 1882 - January 13, 1941)</small> was one of the most preeminent Irish authors of the twentieth century. He is known for his literary innovation such as a strictly focused narrative and indirect style. Although not strictly originally, James Joyce brought the aforementioned writing methods were to an unparalleled height.</p>",
"book_ids": ["1", "2"]
},
{
"id": 2,
"name": "F. Scott Fitzgerald",
"biography": "<p><b>Francis Scott Key Fitzgerald</b> <small>(September 24, 1896 – December 21, 1940)</small> was an American author of novels and short stories, whose works are the paradigmatic writings of the Jazz Age, a term he coined. He is widely regarded as one of the greatest American writers of the 20th century. Fitzgerald is considered a member of the 'Lost Generation' of the 1920s. He finished four novels: This Side of Paradise, The Beautiful and Damned, The Great Gatsby (his most famous), and Tender Is the Night. A fifth, unfinished novel, The Love of the Last Tycoon, was published posthumously. Fitzgerald also wrote many short stories that treat themes of youth and promise along with age and despair.</p>",
"book_ids": ["3", "4"]
}
]
}

最佳答案

您正在覆盖模型定义,然后不使用商店来获取记录。例如,我在 jsbin 中稍微简化了您的代码。

App.BooksRoute = Ember.Route.extend({
model: function() {
return this.store.find('book');
}
});


App.AuthorsRoute = Ember.Route.extend({
model: function() {
return this.store.find('author');
}
});

App.ApplicationAdapter= DS.RESTAdapter.extend({
host:'json',
pathForType: function(type) {
return Ember.String.pluralize(type) + '.json';
}
});

http://emberjs.jsbin.com/OxIDiVU/72/edit

关于javascript - ember-data hasMany 关系使用 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20723341/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com