Cappuccino Framework wyróżnia dwa rodzaje parametrów:
Przekazanie argumentów do Cappuccino odbywa się poprzez URL. Daje to programiście możliwość zaimplementowania przywracania stanu aplikacji po naciśnięciu przycisku „Odśwież” w przeglądarce.
Przykład przekazywania argumentów typu arguments:
http://localhost/index.html#ArgumentPierwszy/ArgumentDrugi/ArgumentTrzeci
Na końcu ścieżki do pliku po znaku ”#” przekazywane są kolejno argumenty oddzielone znakiem separacji ”/”.
Przykład przekazywania argumentów typu namedArguments:
http://localhost/index.html?Klucz1=Wartosc1&Klucz2=Wartosc2&Klucz3=Wartosc3
Argumenty nazwane są URL zapytaniem (query string)
Przykład pobierania argumentów typu arguments:
// URL: index.html#ArgumentPierwszy/ArgumentDrugi/ArgumentTrzeci var arguments; arguemtns = [CPApp arguments]; console.log([arguemtns description]); // RETURNS: CPArray (ArgumentPierwszy,ArgumentDrugi,ArgumentTrzeci); // ekwiawalentne zapytanie arguments = [[CPApplication sharedApplication] arguments]; console.log([arguemtns description]); // RETURNS: CPArray (ArgumentPierwszy,ArgumentDrugi,ArgumentTrzeci);
Ciekawostką jest że przekazanie argumentu #debug rejestruje debuger:
// Kawałek kodu z CPApplication.j if([args containsObject:"debug"]) CPLogRegister(CPLogPopup);
Przykład pobierania argumentów typu namedArguments:
// URL: index.html?Klucz1=Wartosc1&Klucz2=Wartosc2&Klucz3=Wartosc3 var namedArguments = [CPApp namedArguments]; console.log([namedArguments description]); // RETURNS: CPDictionary {Klucz1:Wartosc1,Klucz2:Wartosc21,Klucz3:Wartosc3}
Przykład ustawiania argumentów typu arguments
@import <Foundation/CPObject.j> @implementation AppController : CPObject { } - (void)applicationDidFinishLaunching:(CPNotification)aNotification { var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask], contentView = [theWindow contentView]; var theButton = [[CPButton alloc] initWithFrame:CGRectMake(0, 0, 300, 24)]; [theButton setTitle:@"Ustaw argumenty"]; [theButton setAction:@selector(setArguments:)]; [theButton setTarget:self]; [contentView addSubview:theButton]; [theWindow orderFront:self]; } -(void)setArguments:(id)sender { var sharedApplication = [CPApplication sharedApplication]; var args = [CPArray arrayWithObjects:@"param1=value1", @"param2", "param3=Cappuccino & Objective-J", nil]; [sharedApplication setArguments:args]; } @end;
Ustawianie argumentów typu namedArguments „nie jest możliwe” można tylko odczytywać te argumenty.
Jest możliwe ale wymaga to przeładowania strony - czyli klasyczny link