我正在尝试创建一个可排序的项目列表。此时,我正在使用jQuery可排序进行此操作。列表是使用Ember视图创建的。当一个项目被删除时,我希望Ember模型能够用新的订单进行更新。在稍后阶段,我希望将其保存回服务器。
在下面的代码中,您可以看到如何将jQuery代码附加到视图元素。拖拽本身工作很好,停止函数也被调用。
Scrum.Sortable = Ember.View.extend({
tagName : 'div',
didInsertElement: function(){
this.$().sortable({
placeholder: "ui-state-highlight",
stop:function(){
var order = 1;
$('div.pb-item').children().each(function(index){
$(this).find('.order').each(function(){
//
// Access and save the model here
//
$(this).html(order++);
});
});
}
});
}
});您还可以看到我手动更新视图html。这就是我想要储存在模型中的东西。不幸的是,我似乎无法接触到这个模型。
任何关于如何做到这一点的想法都会受到极大的赞赏。
谢谢。
发布于 2013-10-15 02:42:10
只需在函数外部保存对控制器的引用,以便变量在闭包中可见。然后您就可以访问控制器,从而访问您的模型,等等。
didInsertElement: function() {
controller = this.get('controller')
...
$(this).find('.order').each(function(){
// Here you have access to the controller variable.
});
...
}由于控制器在视图的整个生命周期中通常保持不变,这是安全的,并且比保存对模型本身的引用更好,因为您的模型可能会更改。
发布于 2013-10-14 12:09:43
您可以访问控制器,也可以从控制器访问模型。
this.get('controller').get('model')或者您也可以向视图传递上下文,这可能是您的模型。{视图Scrum.Sortable context=this}}
https://stackoverflow.com/questions/19359581
复制相似问题