首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Ember.js事件处理程序闭包中使用jQuery模型

在Ember.js事件处理程序闭包中使用jQuery模型
EN

Stack Overflow用户
提问于 2013-10-14 11:49:36
回答 2查看 489关注 0票数 0

我正在尝试创建一个可排序的项目列表。此时,我正在使用jQuery可排序进行此操作。列表是使用Ember视图创建的。当一个项目被删除时,我希望Ember模型能够用新的订单进行更新。在稍后阶段,我希望将其保存回服务器。

在下面的代码中,您可以看到如何将jQuery代码附加到视图元素。拖拽本身工作很好,停止函数也被调用。

代码语言:javascript
复制
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。这就是我想要储存在模型中的东西。不幸的是,我似乎无法接触到这个模型。

任何关于如何做到这一点的想法都会受到极大的赞赏。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-15 02:42:10

只需在函数外部保存对控制器的引用,以便变量在闭包中可见。然后您就可以访问控制器,从而访问您的模型,等等。

代码语言:javascript
复制
didInsertElement: function() {
  controller = this.get('controller')
  ...
    $(this).find('.order').each(function(){
      // Here you have access to the controller variable.
    });
  ...
}

由于控制器在视图的整个生命周期中通常保持不变,这是安全的,并且比保存对模型本身的引用更好,因为您的模型可能会更改。

票数 2
EN

Stack Overflow用户

发布于 2013-10-14 12:09:43

您可以访问控制器,也可以从控制器访问模型。

this.get('controller').get('model')或者您也可以向视图传递上下文,这可能是您的模型。{视图Scrum.Sortable context=this}}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19359581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档