Ember.js和jQuery Sortable。如何解决变形脚本

时间:2012-07-31 20:10:13

标签: javascript jquery jquery-ui ember.js jquery-ui-sortable

我有一个ember.js应用程序,我想使用jquery ui的可排序小部件。我的观点看起来像

<ul id="sort-container">
{{#each content}}
    <li>{{title}}</li>
{{/each}}
</ul>

排序工作正常,直到其中一个绑定需要更新。问题是每个<li>都被ember臭名昭着的变形<script>标签所包围。查看此图片中生成的实际DOM

DOM

是否有一种简单的方法可以让这两个人很好地一起玩?

有没有办法强制视图重新绘制?在触发可排序的deactivate事件后,我可以轻松地实现它。

1 个答案:

答案 0 :(得分:17)

在我看来,使用Ember.CollectionView,可以解决这个问题。所以我试了一下。它似乎有效:http://jsfiddle.net/8ahjd/

车把:

<script type="text/x-handlebars">
  {{view App.JQuerySortableView content=model}}
  <a {{action removeItem}}>Remove Second Item</a>
</script>

<script type="text/x-handlebars" data-template-name='jquery-sortable-item'>
  {{view.content.title}}
</script>

javascript:

App = Ember.Application.create();

App.ApplicationController = Ember.ArrayController.extend({
  removeItem: function() {
    this.removeAt(1);        
  }            
});

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    return [
      {id: 1, title:'Test 1'},
      {id: 2, title:'Test 2'},
      {id: 3, title:'Test 3'}
    ];
  }
});

App.JQuerySortableItemView = Ember.View.extend({
    templateName: 'jquery-sortable-item'        
});

App.JQuerySortableView = Ember.CollectionView.extend({
    tagName: 'ul',
    itemViewClass: App.JQuerySortableItemView, 

    didInsertElement: function(){
        this._super();
        this.$().sortable().disableSelection();
    }
});