2 回答
TA贡献1864条经验 获得超6个赞
首先是 Angular 不需要 jquery 来处理任何功能。function
不过,在这种情况下,您会因为使用关键字 with而变得不确定$(document)
。里面 $(document).ready(function ()
this
会得到一个全新的范围,它不知道是什么selectedUrl
。你可以探索arrow function
TA贡献1809条经验 获得超8个赞
thisready除非您绑定到函数,否则函数内部会采用完全不同的值this
例如:
this.selectedUrl = this.router.url
console.log("this.selectedUrl",this.selectedUrl) // gives value i.e /home
$(document).ready(function () {
console.log("this.selectedUrl",this.selectedUrl) // this is now available
if(this.selectedUrl=="/home"){
console.log("this.selectedUrlIf",this.selectedUrl)
}
}.bind(this));
或使用从父作用域获取的ES6 箭头函数this
this.selectedUrl = this.router.url
console.log("this.selectedUrl",this.selectedUrl) // gives value i.e /home
$(document).ready(()=>{
console.log("this.selectedUrl",this.selectedUrl) // this is now available
if(this.selectedUrl=="/home"){
console.log("this.selectedUrlIf",this.selectedUrl)
}
});
第三种选择是存储this到另一个变量并改为引用该变量。例如:
var that = this; // store to variable
this.selectedUrl = this.router.url
console.log("this.selectedUrl",this.selectedUrl) // gives value i.e /home
$(document).ready(function () {
console.log("this.selectedUrl",that.selectedUrl) // this is now available via that variable
if(that.selectedUrl=="/home"){
console.log("this.selectedUrlIf",that.selectedUrl)
}
});
解释: this是其余变量中的唯一变量(在面向对象编程中)。根据使用的函数范围,它被重新分配给不同的值(具有相同的名称this) 。因此,要继续this引用另一个函数中的特定实例,您需要遵循上述方法之一。
添加回答
举报