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