我正在创建一个具有整页宽度/高度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?
我有一堆由于顶级函数而嵌套的函数是一个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) 我想看一个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也在使用.
有什么建议??
我想在我的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)
我在角度中使用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)