在显示字段列表模板中打开一个URL

时间:2018-06-26 17:25:07

标签: templates extjs extjs5

在该示例中,如果我单击任何模板项,则会触发click事件,并始终打开一个窗口并加载url。

我需要建立一个条件以仅选择URL;并且只有在单击url时,窗口才打开并加载de url。

var cars = 'car - Fiat, country - Italy, site - https://www.sencha.com/';

Ext.create('Ext.form.Panel', {
    renderTo: Ext.getBody(),
    width: 450,
    height: 200,
    bodyPadding: 10,
    title: 'Template',
    items: [{
        xtype: 'displayfield',
        fieldLabel: 'Cars',
        name: 'cars',
        renderer: function (value, field) {
                if (value && value.indexOf(',') > -1) {
                    this.rndTpl = this.rndTpl || new Ext.XTemplate('<div style = "line-height: 150%;' +
                        'margin-left: -25px; margin-top: -12px; cursor: pointer;">' +
                        '<ul><li>{[values.cars.replace(/,/g, "<li/>")]}</li></ul>' +
                    '</div>');

                return this.rndTpl.apply({
                    cars: value
                });
            } else {
                return value;
            }
        },
        listeners: {
            render: function(field, eOpts) {
                field.setValue('car - Fiat, country - Italy, site - https://www.sencha.com/')
            },
            change: function(field){
                   var stringValues = field.value;

                   if(stringValues && (stringValues !== '' ||  stringValues !== null)){

                       var arrayValues = stringValues.split(',');

                       arrayValues.map(function(item){
                         var typeValue =  item.indexOf('site');

                        if(typeValue > -1){
                             var value = item.substring(item.indexOf('-') + 1);

                            field.getEl().on('click', function () {
                                 window.open(value, '', false);
                            });

                        }else{
                            return false;
                        }
                    });
                }
           }
         }
     }]

  });

字段:https://fiddle.sencha.com/#view/editor&fiddle/2ii0

1 个答案:

答案 0 :(得分:1)

因此,我派出了您的小提琴,并更改了(0,0,-1)事件函数。我正在获取clicked元素的内容,并检查它是否为url,这是FIDDLE