发表于: 2017-06-13 22:02:25

2 997


2017-06-13 Day084

今天完成的事情

debug了一天。

  1. 1. 无意中修改的get请求中的一个方法,导致搜索条件无法无法发送,调了两三个小时;
  2. 2. 完成删除功能。使用delete请求删除数据,总是提示DELETE不是一个有效的方法,要么就是提示请求被拒绝。用postman测试发现delete请求的url是/a/article/1211这样的格式,但是使用URLSearchParams的set方法,装换成字符串后参数默认是/a/article?id=1211这样的格式,也就是query格式。所以只能往链接后面直接加id发送。。
public deleteData(url: string, deleteText: number | string): Observable<any> {
   url += deleteText;
   console.log('this deleteService get deleteText is :' + url);
   return this.http.delete(url)
     .map(this.extractData)
     .catch(this.handleError)
 }
  1. 完成改变文章上下线操作,这个部分的逻辑,不知道这样写好不好:
    a. 先显示操作提示框
/**
  * alert message / online/offline table ------------------------------------------------------------------------------
  * */
 public alertMsg(i: number, modal) {
   console.log(' ' + i + 1);
   // save index in global var
   this.indexCache = i;
   this.modalCache = modal;
   let ii = this.articleList.data.articleList[i];
   //chang template display
   this.statusDisplay =  (ii.status == 1) ? 2 : 1;
   modal.show();
 }

b. 等待操作

 public imNotSure(): void {
   this.modalCache.hide();
 }
 public imSure():void {
   this.changeStatus();
 }

c. 按照操作执行动作:

  /**
  * let article online or offline
  * http put method ------------------------------------------------------------------------------
  * */
 public changeStatus(): void {
   let i = this.indexCache;
   let ii = this.articleList.data.articleList[i];
   ii.status == 2 ? this.letOffline(ii) : this.letOnline(ii);
 }
 // set put params status = 2 $ putData() //  '1' draft / '2' online
 public letOnline(ii: any): void {
   let putText: URLSearchParams = new URLSearchParams();
   putText.set('id', String(ii.id));
   putText.set('status', '2');
   this.putData(putText);
   console.log('online finished');
 }
 // set put params status = 2 $ putData() //  '1' draft / '2' online
 public letOffline(ii: any): void {
   let putText: URLSearchParams = new URLSearchParams();
   putText.set('id', String(ii.id));
   putText.set('status', '1');
   this.putData(putText);
   console.log('offline finished');
 }
 // http --> put
 private putData(putText: URLSearchParams) {
   console.log('putting response is : ');
   console.log(String(putText));
   this.putFun = this.putService.putData(CHANGE, putText)
     .subscribe(res => {this.putMsg = res;
         console.log('got putService data is : ');
         console.log(this.putMsg);});
   if (this.putMsg) {
     console.log(' ' + this.putMsg.message);
     this.putMsg.message == 'success' ? this.putSuccess() : this.putFailed();
   }
 }
 private putSuccess(): void {
   this.modalCache.hide();
   this.goSearch();
   console.log("put success");
 }
 private putFailed(): void {
   console.log("put failed");

明天计划的事情

  1. 额。。完成编辑article部分。

遇到的问题

在上下线操作的提示框第一次弹出的时候需要点击两次确定才能隐藏提示框,第一次以后没有问题。但是点击两次也会发送两次请求。这个暂时还没找到原因。

收获

http的getdelelt方法的参数都是相同的类型,为什么按照接口两个请求发送的数据格式不同,就像上面的那样

get(url: string, options?: RequestOptionsArgs): Observable<Response>;
delete(url: string, options?: RequestOptionsArgs): Observable<Response>;



返回列表 返回列表
评论

    分享到