Как определить собственную функцию в представлении в Sencha Touch 2

Я пытаюсь определить свою собственную функцию в Sencha Touch 2, но все равно получаю сообщение об ошибке:

Uncaught ReferenceError: функция22 не определена

И мой файл, отвечающий за это: Position.js в каталоге View

Ext.define('GS.view.Position', {
extend: 'Ext.Map',

xtype: 'map',

config: {
    title: 'Position',
    iconCls: 'time',
    useCurrentLocation:true,
    mapOptions: {
        zoom: 19
    },

    listeners: {
        maprender : function(comp, map){
            //new google.maps.LatLng,
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(this._geo.getLatitude(), this._geo.getLongitude()),
                title: '1',
                map: map
            });
            google.maps.event.addListener(marker, 'click', function22);
            new google.maps.Marker({
                position: new google.maps.LatLng(51.266064,15.562048),
                title: '1',
                map: map
            });
        }
    }
},
function22: function(){
    alert('some alert');
}
});

person milosz0010    schedule 31.03.2012    source источник


Ответы (1)


Sencha touch — это только Javascript! Все, что верно для Javascript, будет работать и с сенча тач!

Вот как решил эту проблему:

В html, прежде чем вставлять любой другой javascript, я пишу эту строку:

<script type="text/javascript">var MYGLOBALOBJECT={v:{},f:{}};</script>

MYGLOBALOBJECT — это массив с двумя элементами, названными v и f. MYGLOBALOBJECT.v — это хэш, в котором я могу хранить все свои переменные следующим образом:

MYGLOBALOBJECT.v.myNumber = 123.45;
MYGLOBALOBJECT.v.justASrting = 'this is a string';

Поскольку в Javascript функции — это просто другой тип переменной, вы также можете хранить функции в этом глобальном объекте, для этого я использую MYGLOBALOBJECT.f:

MYGLOBALOBJECT.f.aGlobalFunction = function (parameter) {
    // do something useful
};

Вы можете использовать эту функцию везде в своем коде, например:

var xy = MYGLOBALOBJECT.f.aGlobalFunction(someValue);

Поскольку MYGLOBALOBJECT i определяется вне фигурных скобок, это глобальный объект, и вы можете использовать его где угодно.

person Hubert Schölnast    schedule 31.03.2012