在Ember组件中,我实例化一个滑块(https://github.com/seiyria/bootstrap-slider)并尝试在组件被销毁时将其清理干净。我的设置和拆卸功能是:
didInsertElement: function() {
let component = this;
let elem = component.$().find('.slider')[0];
let slider = Ember.$(elem).slider({
ticks: [0, 20, 40, 60, 80, 100],
ticks_labels: ['0','20','40','60','80','100'],
ticks_snap_bounds: 5,
range: true
});
let min = parseInt(component.get('min')),
max = parseInt(component.get('max'));
slider.slider('setValue', [ min, max ], true, false);
slider.on('change', function(evt) {
component.set('last', evt.value.newValue);
Ember.run.debounce(component, component.sendScores, 200);
});
component.set('slider', slider);
},
willDestroyElement: function() {
console.log(this);
console.log(this.get('slider'));
this.get('slider').destroy();
}
问题在于,我发现了Uncaught TypeError: this.get(...).destroy is not a function
例外情况。
具体问题:我在这里做错了什么,因此destroy()
方法不可用。
一般问题是:我应该存储一个"句柄"我的滑块实例作为Ember属性并像这样检索它还是有更好的方法?
答案 0 :(得分:3)
这是滑块库的误用。销毁该库实例的正确方法是:
willDestroyElement: function() {
this.get('slider').slider('destroy');
# NOT: this.get('slider').destroy();
}