2015-11-25 1 views
0

Я хочу выделить элемент dom постоянно используя Ext JS.ExtJS - Как выделить элемент dom постоянно?

Здесь общее использование Ext.dom.Element.highlight функции:

field.getEl().highlight('#fbac3d', { 
    attr: "backgroundColor", 
    endColor: "#ffffff", 
    easing: 'easeIn', 
    duration: 4000 
}); 

Easing в порядке, но я хочу, чтобы это не закончилось endColor.

ответ

0

У вас может быть событие afteranimate listener и установить backgroundColor.

field.getEl().highlight('#fbac3d', { 
attr: "backgroundColor", 
endColor: "#ffffff", 
easing: 'easeIn', 
duration: 4000, 
listerners: { 
    afteranimate: function() { 
     // here you can set style attributes to your field 
    } 
} 
}); 

или вы можете переопределить метод выделения, если хотите сделать эту функциональность юниверсом.

Ext.dom.Element.override({ 
     highlight: function(color, o) { 
     var me = this, 
      dom = me.dom, 
      from = {}, 
      restore, to, attr, lns, event, fn; 

     o = o || {}; 
     lns = o.listeners || {}; 
     attr = o.attr || 'backgroundColor'; 
     from[attr] = color || 'ffff9c'; 

     if (!o.to) { 
      to = {}; 
      to[attr] = o.endColor || me.getColor(attr, 'ffffff', ''); 
     } 
     else { 
      to = o.to; 
     } 

     // Don't apply directly on lns, since we reference it in our own callbacks below 
     o.listeners = Ext.apply(Ext.apply({}, lns), { 
      beforeanimate: function() { 
       restore = dom.style[attr]; 
       var el = Ext.fly(dom, '_anim'); 
       el.clearOpacity(); 
       el.show(); 

       event = lns.beforeanimate; 
       if (event) { 
        fn = event.fn || event; 
        return fn.apply(event.scope || lns.scope || WIN, arguments); 
       } 
      }, 
      afteranimate: function() { 
       //Commented this , here it restores background color 
       //if (dom) { 
       // dom.style[attr] = restore; 
       //} 

       event = lns.afteranimate; 
       if (event) { 
        fn = event.fn || event; 
        fn.apply(event.scope || lns.scope || WIN, arguments); 
       } 
      } 
     }); 

     me.animate(Ext.apply({}, o, { 
      duration: 1000, 
      easing: 'ease-in', 
      from: from, 
      to: to 
     })); 
     return me; 
     } 
    }); 

Пример Фидл: https://fiddle.sencha.com/#fiddle/11mo

+0

'field' (или его подклассы, такие как' displayfield') не имеет 'setStyle' функцию; поэтому дает ошибку. – talha06

+0

как насчет setFieldStyle? –

+0

да, это то, что я точно сделал сейчас. Если вы отредактируете свой пост, я бы хотел отметить его как правильный ответ. Благодарим за руководство. пс. функция setFieldStyle принимает единственный параметр, который является комбинацией css-rule & value. В настоящее время он имеет синтаксическую проблему. – talha06

Смежные вопросы