小编Sum*_*hal的帖子

角度4 - 滚动动画

我正在创建一个具有整页宽度/高度div的网页.向下滚动时我有两种方法.

滚动点击

//HTML
<a (click)="goToDiv('about')"></a>

//JS
    goToDiv(id) {
        let element = document.querySelector("#"+id);
        element.scrollIntoView(element);
      }
Run Code Online (Sandbox Code Playgroud)

滚动HostListener

  @HostListener("window:scroll", ['$event'])
  onWindowScroll($event: any): void {
    this.topOffSet = window.pageYOffset;
    //window.scrollTo(0, this.topOffSet+662);
  }
Run Code Online (Sandbox Code Playgroud)

1.如何添加滚动动画效果?

就像 :

$('.scroll').on('click', function(e) {
    $('html, body').animate({
        scrollTop: $(window).height()
    }, 1200);
});
Run Code Online (Sandbox Code Playgroud)

2.如何使用HostListener滚动到下一个div?

javascript css angular angular-animations

24
推荐指数
2
解决办法
2万
查看次数

返回值而不是promise [停止嵌套延迟的promise]

我有一堆由于顶级函数而嵌套的函数是一个ajax请求.所以我想在嵌套子函数中返回值而不是promise.

let getUserPermissions = function(id) {
      let deferred = $q.defer();
      let promise = accessRequestService.getPermissions(id);
      promise.then(function(data) {
        deferred.resolve(data);
      }, function(err) {
        deferred.reject(err);
      })
      return deferred.promise;
    }
Run Code Online (Sandbox Code Playgroud)

孩子1

$rootScope.userInit = function() {
        return getUserPermissions(vzid)
          .then(function(data) {

            //Some code here

            return data;
          })

    }
Run Code Online (Sandbox Code Playgroud)

孩子2

let checkAuthorize = function(toState) {
  return $rootScope.userInit().then(
    function(data) {
//some code here 
      return data;
    });
}
Run Code Online (Sandbox Code Playgroud)

3级

checkAuthorize(toState).then( function(val){ 
 $rootScope.isAuthorized = val;
  if ($rootScope.isAuthorized == true) {
        $log.info('is Authorized')
      } else {
        $log.info('is not Authorized');
        throw new …
Run Code Online (Sandbox Code Playgroud)

javascript deferred angularjs es6-promise

7
推荐指数
2
解决办法
1251
查看次数

角度4 - 观察变量变量的属性

我想看一个json的嵌套属性.只要此嵌套属性更改,就调用fn().

export class HeaderComponent  {
  user: any;

  constructor(){
    this.user = {
      options: [
        { name: 'Jenny Hess', img: 'assets/img/avatar/small/jenny.jpg' },
        { name: 'Elliot Fu', img: 'assets/img/avatar/small/elliot.jpg' },
        { name: 'Stevie Feliciano', img: 'assets/img/avatar/small/stevie.jpg' }
      ],
      selected: { name: 'Jenny Hess', img: 'assets/img/avatar/small/jenny.jpg' }
    }
  }
Run Code Online (Sandbox Code Playgroud)

Fn改变了值

public changeUser(item) {
    this.user.selected = item;
    /*Some Code here*/
}

  public customLogin(user) {
        /*Some Code here*/
        this.user.selected = user;
        /*Some Code here*/
}
Run Code Online (Sandbox Code Playgroud)

只要this.user.selected更改的值 调用函数.我rxjx也在使用.

有什么建议??

javascript angular

3
推荐指数
1
解决办法
1万
查看次数

Angular 4 - 请求的资源上没有"Access-Control-Allow-Origin"标头

我想在我的Angular 4应用程序中使用Spotify/Musixmatch API获取一些数据,但它无法正常工作.我一直收到这个错误:

XMLHttpRequest无法加载 http://api.musixmatch.com/ws/1.1/album.get?album_id=14250417&apikey=xyz010xyz.对预检请求的响应未通过访问控制检查:请求的资源上不存在"Access-Control-Allow-Origin"标头.原产地" 的http://本地主机:9000 "因此不允许访问.

JS

  let headers = new Headers();
    headers.append('Content-Type','application/json');
    headers.append('Accept', 'application/json');
    headers.append('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, DELETE, PUT');
    headers.append('Access-Control-Allow-Origin', '*');
    headers.append('Access-Control-Allow-Headers', "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding");
    let options = new RequestOptions({ headers: headers });
    console.log(options)
    return this.http.get(this.url + 'album.get?album_id=' + album_id + '&apikey=' + this.apikey, options)
      .map(res => res.json())
  }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

javascript angular

2
推荐指数
1
解决办法
2万
查看次数

Angular4 - 嵌套的Http调用

我在角度中使用http嵌套调用.

首先要求获得令牌. 第二次调用将使用令牌并返回实际数据.

  public get(api) {
    return this.http.get(this.url + '/token')
      .map(res => res.json())
      .toPromise()
      .then((data: any) => {
        this.access_token = data.access_token
        let headers = new Headers();
        headers.append('Authorization', 'Bearer ' + this.access_token);
        return this.http.get(this.url + api, {
          headers: headers
        }).map(res => res.json());
      })
  }
Run Code Online (Sandbox Code Playgroud)

该函数返回Promise<Observable<any>>.如何解析响应,以便我可以从订阅中的嵌套调用中获取数据.

this.get('me/profile')
    .subscribe(data => {
         console.log(data);
      });
Run Code Online (Sandbox Code Playgroud)

javascript rxjs angular

0
推荐指数
1
解决办法
3624
查看次数