scriptsharp & jQuery plugin: hoe aanvullende methoden voor plug-ins te bieden

Ik maak een jquery-plug-in met scriptsharp ... hoe kan ik aanvullende methoden definiëren en toegang krijgen tot de opties van de plug-in?

Voor zover ik kan zien, is er maar één methode beschikbaar en worden de opties niet bij de elementen opgeslagen?

bijv. Ik wil kunnen schrijven:

jQuery.Select ( "# myDiv") Plugin() someMethod ()..;

in sommige gevallen wil ik toegang krijgen tot MyPluginOptions ...

update: 3 nov 2011: as far as I can see, the only option I have now, is to define the method as follows:

public static jQueryObject MyPlugin(object methodOrOptions, object parm1, object parm2 )

ok, eerste parameter, methodeOrOptions is lelijk, maar waarschijnlijk de enige manier, vanwege de aard van javascript. maar dan moet ik zoveel extra argumenten opgeven als elke extra methode nodig zou hebben. Het is jammer dat ik het object params [] hier niet kan gebruiken. ( update 4 nov: ook geen ondersteuning voor optionele parameters ...)

Toch lijkt het hele patroon 'niet goed' voor mij, ok, vanwege het verschil tussen C# en javascript, maar misschien kan scriptsharp-compiler ons helpen om mismatch te overwinnen ...

0

1 antwoord

Heb je de monsters bekeken? Als ik je vraag goed begrijp, is dit vrijwel alles geregeld ...

https://github.com/nikhilk/scriptsharp/tree/master/samples/PhotoGrid/Plugins demonstrates writing an import library for an existing plugin (Lightbox and Isotope).

https://github.com/nikhilk/scriptsharp/tree/master/samples/PhotoDemo/Gallery demonstrates writing a plugin that enables the following (a method + options type with method using the options object of course):

GalleryPluginOptions options =
    new GalleryPluginOptions("tags", tags,
                             "thumbsListID", "thumbsList",
                             "photoPanelID", "photoPanel",
                             "thumbnailTemplateID", "thumbnailTemplate",
                             "photoTemplateID", "photoTemplate");

jQuery.Select("#gallery").Plugin().Gallery(options);

Dit stukje code bevindt zich in de methode gerelateerd aan het options-object:

public static jQueryObject Gallery(GalleryPluginOptions customOptions) {
    GalleryPluginOptions defaultOptions =
        new GalleryPluginOptions("count", 10,
                                 "photoService", new FlickrService());
    GalleryPluginOptions options =
        (GalleryPluginOptions)jQuery.Extend(new Dictionary(), defaultOptions, customOptions);
1
toegevoegd
Ten eerste, ik heb het over een echte plug-in, zoals je GalleryPlugin ..
toegevoegd de auteur rekna, de bron
Ten eerste, ik heb het over een echte plug-in, zoals je GalleryPlugin .. Je galerij-plug-in heeft maar één methode: Galerij (customOptions) maar laat zien dat je extra methodes $ ("# mydiv") wilt hebben. Galerij (opties); => dit maakt de plugin $ ("# mydiv"). disablegallery ();//aanvullende methode op galerij-plug-in (moet toegang tot opties hebben) of $ ("# mydiv"). galerij ("uitschakelen");//dit lijkt de nieuwe manier te zijn om aanvullende methoden aan te bieden voor jquery-plug-ins
toegevoegd de auteur rekna, de bron
Ik kan hier geen goede oplossing voor vinden ... probeer params object [] parms toe te voegen aan de MyPlugin-methode, maar de statische methode van plug-in accepteert dit niet ..
toegevoegd de auteur rekna, de bron
Kon je niet gewoon een stringparameter toevoegen aan je plugin-methode - bijv. Galerij (stringbewerking) ... of zelfs een benoemde enum gebruiken en in plaats daarvan Galerij (bewerking Galerieoperatie) hebben? Of mis ik iets?
toegevoegd de auteur Nikhil Kothari, de bron