2016-12-18 3 views

Antwort

0

Das typische Muster besteht darin, Ereignis-Listener zu einem von Ihrem Modul zurückgegebenen Proxy hinzuzufügen. Wenn ein Ereignis eintritt, das von Ihrem Modul ausgegeben werden soll, um vom JavaScript-Code verarbeitet zu werden, können Sie dies tun.

-(void)registerCallbacks:(id)args 
{ 
    ENSURE_SINGLE_ARG(args, NSDictionary); 

    NSLog(@"[KROLLDEMO] registerCallbacks called"); 

    // Save the callback functions and retain them 
    successCallback = [[args objectForKey:@"success"] retain]; 
    cancelCallback = [[args objectForKey:@"cancel"] retain]; 
    requestDataCallback = [[args objectForKey:@"requestData"] retain]; 

    NSLog(@"[KROLLDEMO] Callbacks registered"); 
} 

..., die von Ihrem JS aufgerufen wird:

Ihre JS können Ihre Rückrufe durch den Aufruf einer Methode auf dem Modul registrieren

var yourModule = require('your.module'); 
yourModule.registerCallbacks({ success: ..., etc }) 

... und wenn Ihr Modul will lassen Sie Ihre JS wissen was los ist:

if (successCallback != nil){  
    NSMutableDictionary *event = [NSMutableDictionary dictionary]; 
    [event setObject:@"foo" forKey:@"message"]; 
    [event setObject:@"bar" forKey:@"title"]; 
    [self _fireEventToListener:@"success" withObject:event listener:successCallback thisObject:nil]; 
} 

hier weitere Beispiele siehe: https://github.com/appcelerator-modules/ti.moddevguide/search?utf8=%E2%9C%93&q=fire

+0

Danke für Ihre Antwort Dawson, ich denke meine Frage ist nicht klar. In meinem nativen Modul möchte ich auf den Ereignisspeicher zugreifen, der vom Titanium SDK zum benutzerdefinierten Aktualisieren von Ereignissen erstellt wurde. Der Ereignisspeicher ist hier deklariert: https://github.com/appcelerator/titanium_mobile/blob/dafb2be8ed05ee1706c7dfe86966a1f603f7bb9c/iphone/Classes/CalendarModule.m#L43 – hini

Verwandte Themen