我在屏幕上有各种各样的余烬组件。使用gridster.js将组件存储在网格中。当您在gridster中调整框大小时,可以使用stop函数调整框大小时访问。
export default Ember.View.extend(Ember.Evented,{
setupGridster : function() {
$(".gridster ul").gridster({
widget_base_dimensions: [140, 140],
widget_margins: [5, 5],
helper: 'clone',
resize: {
enabled: true,
max_size: [4, 4],
min_size: [1, 1],
start: function(e, ui, $widget) {
},
resize: function(e, ui, $widget) {
},
stop: function(e, ui, $widget) {
self.trigger('widget:resize:stop');
console.log('widget:resize:stop');
}
}
}).data('gridster');
...
在我拥有的组件中:
this.on('widget:resize:stop', this, 'rerender');
但该组件似乎没有在作用域中包含'widget:resize:stop'事件,因此代码永远不会执行。
答案 0 :(得分:0)
何时聆听'对于使用on()
的事件,您需要获取触发该方法的事物的实例并在该对象上调用on
方法。
很难确切地知道您需要找到哪个对象,因为我不知道您的组件/视图的树,但是如果上述组件' parent是上面的Em.View
代码,你应该听:
this.get('parentView').on('widget:resize:stop', this, this.rerender);
另外,请确保您在诸如willInsertElement或didInsertElement之类的方法中调用on
。例如:
watchForResize: function() {
this.get('parentView').on('widget:resize:stop', this, this.rerender);
}.on('willInsertElement'),