Skip to content

Latest commit

 

History

History
71 lines (58 loc) · 1.64 KB

ser.md

File metadata and controls

71 lines (58 loc) · 1.64 KB
import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import { UUID } from 'angular2-uuid';
// import 'rxjs/add/operator/toPromise';

import {Todo} from './todo.model';
import { resolve } from 'url';
import { reject } from 'q';

@Injectable({
  providedIn: 'root'
})
export class TodoService {

  // 定义你的假WebAPI地址,这个定义成什么都无所谓
  // 只要确保是无法访问的地址就好
  private api_url = 'api/todos';
  private headers = new Headers({'Content-Type': 'application/json'});

  todos: Todo[] = [];

  constructor(private http: Http) { }

  test() {
    this.http
              .get('http://localhost:3000/posts')
              .toPromise()
              .then(res => {
                 alert(JSON.stringify(res.json()));
              })
              .catch(this.handleError);
  }

  // POST /todos
    addTodo(desc: string): Promise<Todo> {
      this.test();
      const todo = {
        id: UUID.UUID(),
        desc: desc,
        completed: false
      };
      return this.http
              .post(this.api_url, JSON.stringify(todo), {headers: this.headers})
              .toPromise()
              .then(res => {
                 return res.json() as Todo;  // 以Todo的形式返回
              })
              .catch(this.handleError);
  }

  private handleError(error: any): Promise<any> {
    console.error('An error occurred', error);
    return Promise.reject(error.message || error);
  }

  add(todoItem: string): Todo[] {
    const todo = {
      id: UUID.UUID(),
      desc: todoItem,
      completed: false
    };
    this.todos.push(todo);
    return this.todos;
  }

}