我有一个要从另一个函数访问的函数,但是遇到一个错误,告诉我该函数未定义。
我具有此功能来转换值
ngValue
如果我调用this.convertValue或convertValue,则会收到未定义的错误。这里有什么建议吗?
答案 0 :(得分:0)
似乎两个函数都是正在定义的对象的一部分。因此,this
不是该当前对象的引用。
您可以先定义convertValue
函数,然后再定义该对象,然后不使用this
关键字直接调用它。
function convertValue (value, exchangeRate){
return value * exchangeRate;
}
如果由于代码的结构而无法执行此操作,则可以在此之前定义一个值为this
的变量。像这样:
const that = this;
然后使用that.convertValue(items[index].value, 0.861)
以下是this
工作原理的文档参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this
因此您可以相应地增强代码。
答案 1 :(得分:0)
由于您在代码中分配了that = this
,因此我认为您可以使用that
来访问函数。
答案 2 :(得分:0)
尝试这样可以100%工作: 当您定义局部变量时,它们表示该类/对象的全局变量。 一开始就收集它,因为当您得到:
this.collection.each(function (model) {
// There is no this any more
// this is ref for this.collection !
}
尝试一下:
getTabularData: function (page) {
var ROOT_MAIN = this;
var data = [],
that = this,
models = this.collection.models;
var length = models.length;
if (this.collection) {
this.collection.each(function (model) {
var items = model.attributes.items;
for (var index in items) {
convertValue(1, 2);
var hash = {
// Calling the function
gbpValue: ROOT_MAIN.convertValue(items[index].value, 0.861),
}
data.push(hash);
}
});
}
return data;
},
答案 3 :(得分:0)
// define
convertValue = function (value, exchangeRate) {
return value * exchangeRate;
};
// use
convertValue(items[index].value, 0.861);