我在javascript dojo工具包中有一个javascript模块。但我在使用此关键字时遇到问题。
define(["dojo/_base/declare","database/tool"],
function (declare, databaseTool) {
return declare(null, {
person: null,
spatialReference: null,
constructor: function (parameters) {
this.person = parameters.person;
},
activatePerson: function () {
var db = new databaseTool();
var personOptions = {
"isActivated": true
};
var onActivated = function(result) {
var updatedPerson = result.person;
var oldPerson = this.person; //retuns <div id="person"/>
};
db.update(personOptions, onActivated );
}
});
})
我希望通过此关键字在person object
方法中使用onActivated
模块。
但是this.person不返回javascript对象。它返回<div id="person...>
答案 0 :(得分:2)
Dojo有一个名为hitch()
的函数(来自dojo/_base/lang
模块)。你的解决方案是:
var onActivated = function(result) {
var updatedPerson = result.person;
var oldPerson = this.person; //retuns <div id="person"/>
};
db.update(personOptions, lang.hitch(this, onActivated) );
它接受两个参数,第一个是用作范围(this
)的对象,第二个参数是开始函数。
答案 1 :(得分:1)
var context = this;
var onActivated = function(result) {
var updatedPerson = result.person;
var oldPerson = context.person;
};
试试这种方式。