我正在学习Typescript,并且刚刚学会了lambda函数用于(编辑)设置this
的值。但是,我不确定如何将我的视图模型this
传递给调用另一个我尚未定义的方法的函数。就我而言,我试图调用Knockout方法。见例:
var MyViewModel = (function () {
function MyViewModel() {
var _this = this;
...
this.someMethod = function () {
ko.utils.arrayForEach(this.array1(), function (item) {
while (item.array2().length < _this.array3.length) {
item.array2.push(12345);
}
});
};
...
var MyViewModel = (function () {
function MyViewModel() {
var _this = this;
...
this.someMethod = function () {
ko.utils.arrayForEach(_this.array1(), function (item) {
while (item.array2().length < this.array3.length) {
item.array2.push(12345);
}
});
};
...
method = () => {
ko.utils.arrayForEach(this.array1(), function(item){
while(item.array2().length < this.array3().length){
item.array2.push(0);
}
})
}
我使用过的一个解决方案是手动将this.array3().length
设置为_this.array3.length()
,但这很糟糕,我不喜欢它。
我应该如何将正确的this
传递给我的内心功能?
答案 0 :(得分:3)
您需要使用另一个lambda来继续this
:
method = () => {
ko.utils.arrayForEach(this.array1(), (item) => { // NOTE here
while(item.array2().length < this.array3().length){
item.array2.push(0);
}
})
}
TypeScript中的this
提示:https://www.youtube.com/watch?v=tvocUcbCupA&hd=1