我试图按照Angular文档中的英雄教程开始学习Angular,但当我开始改变一些事情时,出现了一些问题:
>
对于我的项目,我使用Django rest框架作为后端,提供用于检索我的“书籍项目”的应用编程接口。我在这方面非常新,所以我只想知道API设置是否正确,但我不知道怎么做。
我开始在django中实现模型,然后是序列化器、视图集,最后是网址。
在angular中,我为http请求编写了服务组件,并编写了一个基本的html来使用此服务并显示通信是有效的。
appcomponent.ts
import { Component, OnInit } from '@angular/core';
import { BookService } from './book.service';
import { Book } from './book';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [BookService],
})
export class AppComponent implements OnInit {
title = 'app works!';
books : Book[] = [];
constructor(private bookService : BookService) { }
getBooks(): void {
this.bookService.getBooks().then(books => this.books = books);
}
ngOnInit(): void {
this.getBooks();
}
}
appcomponent.html
html prettyprint-override"><ul class="books">
<li *ngFor="let book of books">
<span class="badge">{{book.isbn}}</span> {{book.title}}
</li>
</ul>
>
book.ts
导出类Book{id: number; title: string;}
图书服务。ts
从'@角/核'导入{注入;从'@角/超文本传输协议'导入{Headers, Http};导入'rxjs/add/操作员/toPromise';从'./book'导入{Book};
@Injectable()
export class BookService {
private booksUrl = 'http://localhost:8000/api/books/';
constructor(private http: Http) { }
getBooks(): Promise<Book[]> {
return this.http.get(this.booksUrl)
.toPromise()
.then(response => response.json().data as Book[])
.catch(this.handleError);
}
private handleError(error: any): Promise<any> {
console.error('An error occurred', error); // for demo purposes only
return Promise.reject(error.message || error);
}
getBook(id:number): Promise<Book>{
const url = `${this.booksUrl}/${id}`;
return this.http.get(url)
.toPromise()
.then(response => response.json().data as Book)
.catch(this.handleError);
}
private headers = new Headers({'Content-Type': 'application/json'});
}
当我运行此代码时,我有:
<ul _ngcontent-c0="" class="books">
<!--bindings={}-->
</ul>
比如绑定不起作用。但是如果我去“网络”在Chrome,我可以看到从我的服务器检索的书籍列表
[{isbn: "123lko12d", book_title: "Analisi2", pub_date: "2017-06-09T10:12:00Z"},…]
0
:
{isbn: "123lko12d", book_title: "Analisi2", pub_date: "2017-06-09T10:12:00Z"}
book_title
:
"Analisi2"
isbn
:
"123lko12d"
pub_date
:
"2017-06-09T10:12:00Z"
1
:
{isbn: "isijh12432", book_title: "Fisica1", pub_date: "2017-05-17T16:11:02Z"}
book_title
:
"Fisica1"
isbn
:
"isijh12432"
pub_date
:
"2017-05-17T16:11:02Z"
我真的不知道我做错了什么。。。谢谢你抽出时间,很抱歉我的英语不好
更新:控制台中现在显示此行:
(2) [Object,Object] book.service.ts
0:Object
book_title
:
"Analisi2"
isbn
:
"123lko12d"
pub_date
:
"2017-06-09T10:12:00Z"
1:Object
book_title
:
"Fisica1"
isbn
:
"isijh12432"
pub_date
:
"2017-05-17T16:11:02Z"
在您的服务中,在getBooks函数中,尝试以下操作:
getBooks(): Promise<Book[]> {
return this.http.get(this.booksUrl)
.toPromise()
.then(response =>{
console.log(response.json());
return response.json() as Book[];
})
.catch(this.handleError);
}
请把日志放在你的问题上。我认为的问题是,您使用data
,但您的响应中可能没有它(例如,在我当前的项目中,我们将其设置为Content
)
问题内容: 我正在尝试进入instagram页面,但没有运气。我不断收到错误和空白的屏幕截图。 错误文字: Casperjs –version是1.1.0-beta3。 基本上,我使用以下代码: 问题答案: 如果使用了PhantomJS 2,则不再需要下面的垫片。不幸的是,CasperJS1.1-beta3还不支持它,因此您可能想要使用GitHub的master分支。 问题是PhantomJSv1
Spring Boot属性解析程序面临一个奇怪的问题。 正在尝试为其中一个属性执行简单的@Value。在调试日志中,我看到该属性已匹配,但稍后报告为找不到几行。知道怎么回事吗? Java代码: 记录在下面
问题内容: 我目前正在将一个大型应用程序移植到基于HTML5的Web应用程序上-我已经开始在AngularJS中构建该应用程序并享受AngularJS框架的功能- 目前,我遇到了一个问题: 我有一个给我jQuery Datepicker的指令,但是对模型的绑定似乎不起作用。 http://jsfiddle.net/9BRNf/ 我可能会误解指令的工作方式,并想了解我是否可以修补对框架的这一部分理解
我尝试将属性和一些数据绑定到模板,但下面的代码不起作用。我需要的是呈现n个模板的数量取决于printedForms对象的数量,并在每个模板中实现来自适当对象的数据。请告诉我我的代码有什么问题。 注意:控制台中有如下警告:[Vue warn]:计算表达式“printedForm.docNumber”时出错:TypeError:无法读取未定义(在组件中找到)的属性“docNumber”) 我的VueJ
我有一个ListView,并设置了ItemContainerStyle,但我仍然遇到同样的问题。请帮忙
vue3 div 绑定 ref 正常是这样的: 这样的怎么不可以: