如何正确调用JSON对象的回调函数

时间:2013-12-26 16:40:59

标签: javascript extjs

详细信息:

我正在获取html5地理位置的数据;特别是经度和纬度。我正在尝试创建一个插件,任何人都可以在项目中调用并获得long和lat。

我已阅读此How to return response from an ajax call,但我想知道如何调用这些函数。

我放置了extjs标记,即使我认为它更像是javascript核心问题

JavaScript的:

Ext.define('Ext.ux.GeoLocation', {
    alias: 'plugin.ux.geolocation',

    constructor: function() {
        console.log('called 1');
        this.duh = 'yes';
        this.init();

    },

    init: function () {
        console.log('called 2');
        navigator.geolocation.getCurrentPosition(this.test, this.test);        
    },

    test: function(init) {
        console.log('called 3');
        this.duh = "amazing";
    }

});

var geo = new Ext.ux.GeoLocation();
geo.test(); // this gets called twice though... incorrect? 

Here is a FIDDLE

控制台输出输出为:

called 1 
called 2 
called 3 
called 3 

这是一种不好的做法吗?还有其他解决方案吗?

1 个答案:

答案 0 :(得分:2)

在您的类构造函数上,您将test函数传递给navigator.geolocation.getCurrentPosition。你知道其他功能是做什么的吗?最有可能是在内部调用测试。

你可以这样做:

var geo = new Ext.ux.GeoLocation();
console.log("middle");
geo.test();

然后你应该在两个“叫3”线之间看到“中间”。