diff --git a/src/css_composer/model/CssRule.js b/src/css_composer/model/CssRule.js index 973902de6..f99e44067 100644 --- a/src/css_composer/model/CssRule.js +++ b/src/css_composer/model/CssRule.js @@ -55,12 +55,18 @@ export default Backbone.Model.extend(Styleable).extend({ ensureSelectors() { const { em } = this; - const result = []; const sm = em && em.get('SelectorManager'); - const selectors = this.getSelectors(); - const toInit = Array.isArray(selectors); - selectors.forEach(sel => result.push(sm ? sm.add(sel) : sel)); - toInit && this.set('selectors', new Selectors(result)); + const toListen = [this, 'change:selectors', this.ensureSelectors]; + let sels = this.getSelectors(); + this.stopListening(...toListen); + + if (Array.isArray(sels)) { + const res = sels.filter(i => i).map(i => (sm ? sm.add(i) : i)); + sels = new Selectors(res); + } + + this.set('selectors', sels); + this.listenTo(...toListen); }, /**