Ember.js Ember:Jquery UI可排序和移除对象

Ember.js Ember:Jquery UI可排序和移除对象,ember.js,Ember.js,我在排序后尝试删除记录时遇到问题。我有一个与问题相关的文档模型(hasMany)。在视图中,用户可以按不同顺序拖放问题。如果他们单击“删除”按钮,则应将问题从视图中删除。如果用户已对列表重新排序,则当他们单击“删除”按钮时,视图中不会发生任何事情 我看到了一个示例,其中一个项目列表包含在ArrayController中,并使用了beginPropertyChanges()和endPropertyChanges()。我不确定我的问题是否是由于它位于ObjectController(单个模型包含许多

我在排序后尝试删除记录时遇到问题。我有一个与问题相关的文档模型(hasMany)。在视图中,用户可以按不同顺序拖放问题。如果他们单击“删除”按钮,则应将问题从视图中删除。如果用户已对列表重新排序,则当他们单击“删除”按钮时,视图中不会发生任何事情

我看到了一个示例,其中一个项目列表包含在
ArrayController
中,并使用了
beginPropertyChanges()
endPropertyChanges()
。我不确定我的问题是否是由于它位于
ObjectController
(单个模型包含许多项)内,但我也尝试了
propertyWillChange()
PropertyIDChange()
。如果我在用户单击删除按钮后记录模型,我会看到相关问题已被删除。但是,视图没有更新

import Ember from 'ember';

export default Ember.ObjectController.extend({
    updateSortOrder: function(idx, order) {
        var index = parseInt(idx);
        var question = this.get('model.questions').findBy('idx', index);

        this.propertyWillChange('model.questions');

        if( ! Ember.isEmpty(question)) {
            question.set('order', order);
        }

        this.propertyDidChange('model.questions');
    },


    removeQuestion: function(question) {
        this.propertyWillChange('model.questions');
        this.get('model.questions').removeObject(question);
        this.propertyDidChange('model.questions');
    },

    ...
});



// controller template
{{#each question in model.questions itemController="documents/question-item"}}
    <div class="nf-item" {{bind-attr data-order="question.order" data-idx="question.idx"}}>
    ...
    </div>
{{/each}}


// item controller
import Ember from 'ember';

export default Ember.ObjectController.extend({
    needs: ['documents/create'],

    actions: {
        remove: function() {
            var controller = this.get('controllers.documents/create');
            controller.removeQuestion(this.get('content'));
        }
    }
});


// controller's view
import Ember from 'ember';

export default Ember.View.extend({
    sortable: function() {
        var controller = this.get('controller');

        this.$(".nf-sortable").sortable({
            update: function(event, ui) {
                $('.nf-item').each(function(index) {
                    controller.updateSortOrder($(this).attr('data-idx'), index);
                });
            }
        });
    }.on('didInsertElement')
});
从“余烬”导入余烬;
导出默认Ember.ObjectController.extend({
updateSortOrder:函数(idx,order){
var指数=parseInt(idx);
var question=this.get('model.questions').findBy('idx',index);
this.propertyWillChange('model.questions');
如果(!Ember.isEmpty(问题)){
问题.集合('顺序',顺序);
}
这个.propertyDidChange('model.questions');
},
移除问题:功能(问题){
this.propertyWillChange('model.questions');
this.get('model.questions').removeObject(question);
这个.propertyDidChange('model.questions');
},
...
});
//控制器模板
{{{#model.questions itemController=“documents/question item”}中的每个问题
...
{{/每个}}
//项目控制器
从“余烬”导入余烬;
导出默认Ember.ObjectController.extend({
需要:[“文档/创建”],
行动:{
删除:函数(){
var controller=this.get('controllers.documents/create');
controller.removeQuestion(this.get('content'));
}
}
});
//控制器视图
从“余烬”导入余烬;
导出默认的Ember.View.extend({
可排序:函数(){
var controller=this.get('controller');
此.$(“.nf可排序”).sortable({
更新:功能(事件、用户界面){
$('.nf item')。每个(函数(索引){
controller.updatesortororder($(this.attr('data-idx'),索引);
});
}
});
}.on('didInsertElement'))
});