|
发表于 2016-12-6 13:51:43
|
显示全部楼层
本帖最后由 jatyhu 于 2016-12-6 17:11 编辑
\UI2\system\components\justep\picker\demo 这个是基础picker,你想怎么玩都行
我也还没入门,工程需要一个类似的picker,但内容需要根据CALL的参数来决定。折腾了一阵儿才弄出来,借你宝地留个爪印。
首先看懂这个基础PICKER的DEMO,照COPY过来这段
<div component="$UI/system/components/justep/picker/picker" class="x-picker"
xid="list1" data="mainData" disablePullToRefresh="true" disableInfiniteLoad="true">
<div class="x-picker-inner">
<div class="x-pciker-rule x-pciker-rule-ft"/>
<ul class="x-list-template x-pciker-list" xid="listTemplateUl1">
<li xid="li1" bind-text="val('fClass')"></li>
</ul>
<div class="x-pciker-rule x-pciker-rule-bg"/>
</div>
</div>
这样自己的UI里就已经成功显示需要的PICKER了。
下一步我想根据调用参数修改内容,折腾了一阵才发现只要直接修改绑定的数据就可以。。连刷新都不用
var data = this.comp('data3');
data.clear();
data.add({content : '33'});
data.add({content : '34'});
data.add({content : '35'});
data.add({content : '36'});
再来就要设置默认值,这个地儿卡我好久。。。。一comp.setSelectedIndex(1); 整个控件就空白了。。。见鬼的很。。完全摸不着头脑好不好!
直到又去参考 /UI2/system/components/justep/datePicker/datePicker.js 这里有picker的进阶用例
才发现隐藏坑。。
_updatePickerValue : function(name){
var comp = this['_'+name+'Comp'];
if (comp) {
var self = this;
if(this['_set'+name+'PickerValueHandle']) clearTimeout(this['_set'+name+'PickerValueHandle']);
this['_set'+name+'PickerValueHandle'] = setTimeout(justep.Util.bindModelFn(self.getModel(),function() {
self['_set'+name+'PickerValueHandle'] = null;
self._setPickerValue(name, self['_'+name+'Value'].peek());
}), 1);
}
},
必须要用timer来延迟的好不好!!!!
泪奔,改测试代码如下:
Model.prototype.model2ParamsReceive = function(event){
var comp = this.comp('datapicker');
var data = this.comp('data3');
data.clear();
data.add({content : '33'});
data.add({content : '34'});
data.add({content : '35'});
data.add({content : '36'});
setTimeout(function() {
comp.setSelectedIndex(1);
}, 100);
};
解决初始默认值的问题。。。
选择之后,取值的时候,也是直接看数据,不看picker
var data = this.comp('data3');
alert(data.getValue('content'));
|
|