/// <summary> /// 使页面上指定选择器的元素成为自定义插件. /// </summary> /// <param name="selector">用于指定页面上元素的选择器.</param> /// <param name="setting">自定义插件设置, 比如: TimerSetting, RepeaterSetting 等.</param> /// <param name="variableName">如果不为空, 则生成同名的 javascript 脚本变量.</param> public void Plusin ( string selector, PlusinSetting setting, string variableName = null ) { if ( string.IsNullOrEmpty ( selector ) ) throw new ArgumentNullException ( "selector", "选择器不能为空" ); if ( null == setting ) throw new ArgumentNullException ( "setting", "Plusin 设置不能为空" ); string key = string.Format ( "__js{0}", setting.PlusinType ); if ( !ScriptHelper.IsBuilt ( new RazorScriptHolder ( this.page ), key ) ) { ScriptHelper script = new ScriptHelper ( ); //foreach //script.AppendCode ( setting.GetDependentScripts ( ) ); script.Build ( new RazorScriptHolder ( this.page ), key, ScriptBuildOption.Startup ); } this.code += "$(function(){" + ( string.IsNullOrEmpty ( variableName ) ? string.Empty : ( "window['" + variableName + "'] = " ) ) + new JQueryUI ( selector ).Plusin ( setting ).Code + "});"; }
/// <summary> /// 使 jQuery 中包含的页面元素转变为 je 中的自定义插件. /// </summary> /// <param name="setting">自定义插件相关设置, 为 TimerSetting, RepeaterSetting 等.</param> /// <returns>更新后的 JQueryUI.</returns> public JQueryUI Plusin ( PlusinSetting setting ) { // 这个方法引用了命名空间 plusin 里面的类, 可以新建一个 JQueryUIPlusin 类, 再将 Plusin 放到 JQueryUIPlusin 中. if ( null == setting || setting.PlusinType == PlusinType.custom ) return this; setting.Recombine ( ); return this.Execute ( "__" + setting.PlusinType.ToString ( ), MakeOptionExpression ( setting.SettingHelper.CreateOptions ( ) ) ) as JQueryUI; }