Wie

1

in Sencha Touch 2 eigene Funktion im Hinblick definiert Ich versuche, meine eigene Funktion in Sencha Touch 2 und ich bin immer noch einen Fehler immer zu definieren:Wie

Uncaught ReferenceError: function22 is not defined

Und meine Unterlagen verantwortlich dafür ist, : Position.js im Verzeichnis 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'); 
} 
}); 

Antwort

2

Sencha touch ist nur Javascript! Alles was für Javascript gilt, funktioniert auch mit Sencha Touch!

Dies ist, wie dieses Problem zu lösen hat:

In html, bevor Sie eine andere Javascript Einfügen, schreibe ich diese Zeile:

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

MYGLOBALOBJECT ist ein aray mit 2 Stück, mit dem Namen v und f. MYGLOBALOBJECT.v ein Hash ist, wo ich alle meine Variablen wie folgt speichern:

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

Da in Javascript-Funktionen sind nur eine andere Art der Variablen, können Sie auch Funktionen in diesem globalen Objekt speichern kann, ist es das, was ich MYGLOBALOBJECT.f für:

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

können Sie diese Funktion verwenden, überall in Ihrem Code wie folgt aus:

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

Seit MYGLOBALOBJECT Ich definiere außerhalb jeder geschweiften Klammer, es ist ein globales Objekt, und Sie können es verwenden, wo Sie wollen.