//提供两种方式,一种是传入selectValue,selectText, 另外一种是 用onLoadData 或 loadData 加载数据, MWF.xDesktop.requireApp("Template", "MTooltips", null, false); var MSelector = new Class({ Extends: MWF.widget.Common, Implements: [Options, Events], options: { "style": "default", "width": "230px", "height": "30px", "defaultOptionLp" : "请选择", "trigger" : "delay", //immediately "isSetSelectedValue" : true, "isChangeOptionStyle" : true, "inputEnable" : false, "isCreateReadNode" : true, //适应给MDomitem的做法 "emptyOptionEnable" : true, "containerIsTarget" : false, "textField" : "", "valueField" : "", "value" : "", "text" : "", "defaultVaue" : "", "selectValue" : "", "selectText" : "", "isEdited" : true, "tooltipsOptions" : { axis: "y", //箭头在x轴还是y轴上展现 position : { //node 固定的位置 x : "center", //x轴上left center right, auto 系统自动计算 y : "bottom" //y 轴上top middle bottom, auto 系统自动计算 }, event : "click", //事件类型,有target 时有效, mouseenter对应mouseleave,click 对应 container 的 click hiddenDelay : 200, //ms , 有target 且 事件类型为 mouseenter 时有效 displayDelay : 0 //ms , 有target 且事件类型为 mouseenter 时有效 } }, initialize: function (container, options , app, css, dropdownContainer ) { this.setOptions(options); if( !this.options.isEdited && !this.options.isCreateReadNode ){ }else{ this.path = "/x_component_Template/$MSelector/"; this.cssPath = "/x_component_Template/$MSelector/"+this.options.style+"/css.wcss"; this._loadCss(); if( css ){ this.css = Object.merge( this.css, css ) } } this.valSeparator = /,|;|\^\^|\|/; //如果是多值对象,作为用户选择的多个值的分隔符 this.app = app; this.container = $(container); this.dropdownContainer = dropdownContainer || $(dropdownContainer); }, load : function( callback ){ if( this.options.isEdited ){ this.loadEdit(callback) }else{ this.loadRead(callback) } }, initPara: function(){ this.itemNodeList = []; this.itemNodeObject = {}; this.value = this.options.value || this.options.text || this.options.defaultVaue; this.text = this.options.text || this.options.value || this.options.defaultVaue; this.textField = this.options.textField || this.options.valueField; this.valueField = this.options.valueField || this.options.textField; if( this.options.selectValue || this.options.selectText ){ this.textField = "text"; this.valueField = "value"; var selectValue = this.options.selectValue; var selectText = this.options.selectText; this.selectValues = typeOf( selectValue ) == "array" ? selectValue : selectValue.split( this.valSeparator ); this.selectTexts = typeOf( selectText ) == "array" ? selectText : selectText.split(this.valSeparator); this.data = []; if( this.options.emptyOptionEnable ){ this.data.push({ value : "", text : this.options.defaultOptionLp || "" }) } this.selectValues.each( function( v,i ){ this.data.push({ value : v, text : this.selectTexts[i] }) }.bind(this)) } }, loadRead: function(callback){ this.initPara(); var fun = function(){ for( var i=0; i