如何将onyx.Picker重置为预选状态

时间:2015-01-31 19:41:11

标签: javascript enyo

我有一个onyx.Picker,在选择之前显示"点击选择"按钮提示用户采取行动。正如预期的行为一样,一旦用户选择了一个选项,他们就无法恢复到"点击选择"显示。但是,我需要能够以编程方式重置表单,在这种情况下,选择器应该再次恢复到它的原始状态。

我已经发现我可以通过调用this.$.PickerName.setSelected(null)删除已挑选的选项但是,用户界面不会还原为"点击选择"按预期显示。如何完全重置选择器?

小提琴: http://jsfiddle.net/trex005/2amLu1r4/

1 个答案:

答案 0 :(得分:1)

据我所知,选择器上的setSelected()希望您传递一个对动态设置的控件(选择器的clientControl)的引用,因此传递null什么都不做选择项目后,项目列表将关闭,但项目保持选中状态,pickerButton显示所做的选择。所以,你所要做的就是这个。 this.$.pickerButton.setContent('Click to Select');将重置pickerButton内容。

http://jsfiddle.net/scrs3Le5/1/

enyo.create({
components: [{
    kind: "onyx.PickerDecorator",
    name: "DecoratorName",
    components: [{
        name:'pickerButton',
        style: 'min-height:2.5rem;min-width:330px;',
        content: "Click to Select"
    }, {
        kind: 'onyx.Picker',
        name: 'PickerName',
        components: [
            {content: "Is broken"},
            {content: "Is not cool"},
            {content: "Is very very very very very very very cool!"}
        ]
    }]
}, {
    kind: 'Button',
    ontap: 'ResetPicker',
    content: 'ResetPicker'
}],
ResetPicker: function () {
    //this.$.PickerName.setSelected(null);
    this.$.pickerButton.setContent('Click to Select');
},
rendered: function () {
    this.inherited(arguments);
}
}).renderInto(document.body);

希望有所帮助!