Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui pushObject上是否有要监视的事件?_Jquery Ui_Ember.js - Fatal编程技术网

Jquery ui pushObject上是否有要监视的事件?

Jquery ui pushObject上是否有要监视的事件?,jquery-ui,ember.js,Jquery Ui,Ember.js,我以编程方式将一个对象(使用pushObject)推送到一个可排序的列表中。我的问题是,如果我尝试$(选择器).sortable('refresh')或$(选择器).sortable('serialize')则序列化不包含最近添加的dom项。我可以控制台.log($(选择器)),它似乎知道dom项已经添加 我最初的想法是,一旦pushObject完成,是否有需要观看的事件?还是回电话 pushObject上是否有要监视的事件 最简单的方法是添加一个观察者,当列表长度改变时触发。但在这种情况下,这

我以编程方式将一个对象(使用pushObject)推送到一个可排序的列表中。我的问题是,如果我尝试
$(选择器).sortable('refresh')
$(选择器).sortable('serialize')
则序列化不包含最近添加的dom项。我可以控制台.log($(选择器)),它似乎知道dom项已经添加

我最初的想法是,一旦pushObject完成,是否有需要观看的事件?还是回电话

pushObject上是否有要监视的事件

最简单的方法是添加一个观察者,当列表长度改变时触发。但在这种情况下,这可能还不够

听起来这是个时间问题。如果在pushObject之后(甚至在观察者中)尝试调用refresh,则刷新代码将在dom更新之前运行

诀窍是确保在将新元素写入dom后调用
$(选择器).sortable('refresh')
。这可能来自dom项视图上的didInsertElement钩子,也可能来自观察者,但正如@Luke在评论中提醒我的那样,最好的方法是安排刷新在渲染完成后运行。比如:

Em.run.schedule('afterRender', this, this.refreshSortable)

你能显示你的控制器的代码或者你在哪里调用pushObject吗?你完全正确。我使用了addEnumerableObserver方法,它在DOM更新之前触发。我将研究didInsertElement或parentViewDidChange。在找到解决方案后将更新。您还可以计划在渲染完成后运行方法。e、 g.
this.pushObject(…);Em.run.schedule('afterRender',this,this.refreshSortable)
@LukeMelia谢谢我总是忘了那一个,这是最好的选择。谢谢迈克和卢克,你们太棒了。标记为答案