我使用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编译器可以帮助我们,克服不匹配...
答案 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);