scriptsharp& jquery插件:如何在插件上提供其他方法

时间:2011-10-27 20:46:10

标签: script#

我使用scriptsharp创建一个jquery插件...如何定义其他方法,并访问插件的选项?

据我所知,只有一种方法可用且选项不与元素一起存储?

e.g。我希望能够写下:

jQuery.Select( “#myDiv”)插件()的someMethod();

在某些方法中,我想访问MyPluginOptions ...

更新:2011年3月3日: 据我所见,我现在唯一的选择是定义方法如下:

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

好的,第一个参数,methodOrOptions很难看,但可能是唯一的方法,因为javascript的性质。 但是,我必须指定尽可能多的额外参数,因为任何额外的方法都需要。遗憾的是我不能在这里使用params对象[]。 (更新4 nov:也不支持可选参数...)

然而,整个模式对我来说似乎“不对”,好吧,由于c#和javascript之间存在差异,但也许scriptharp编译器可以帮助我们,克服不匹配...

1 个答案:

答案 0 :(得分:1)

你检查了样品吗?如果我正确地理解了你的问题,那么几乎全部都是这样......

https://github.com/nikhilk/scriptsharp/tree/master/samples/PhotoGrid/Plugins演示了为现有插件编写导入库(Lightbox和Isotope)。

https://github.com/nikhilk/scriptsharp/tree/master/samples/PhotoDemo/Gallery演示编写一个启用以下内容的插件(当然,方法+选项类型使用选项对象的方法):

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

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

这段代码位于与options对象相关的方法中:

public static jQueryObject Gallery(GalleryPluginOptions customOptions) {
    GalleryPluginOptions defaultOptions =
        new GalleryPluginOptions("count", 10,
                                 "photoService", new FlickrService());
    GalleryPluginOptions options =
        (GalleryPluginOptions)jQuery.Extend(new Dictionary(), defaultOptions, customOptions);