【问题标题】:How to use sweet alert with Ember.js and Rails如何在 Ember.js 和 Rails 中使用甜蜜警报
【发布时间】:2014-10-26 21:02:41
【问题描述】:

我是一名 Ember 菜鸟,在使用 ember/rails 应用程序时遇到了一些问题。我相信我有一个范围问题,我不太确定如何处理..

在我的控制器内部,我有一个删除操作,其中包含以下代码:

swal({
  title: "Are you sure?"
  text: "You will not be able to recover this post!"
  type: "warning"
  showCancelButton: true
  confirmButtonColor: "#DD6B55"
  confirmButtonText: "Yes, delete it!"
  closeOnConfirm: false
}, ->
  @get('model').destroyRecord().then =>
    @transitionToRoute 'posts'
  swal("Deleted!", "Your post has been deleted.", "success")

)

我将错误追溯到'@get('model').destroyRecord().then',我很确定这是因为我在控制器操作内部的函数内部调用'this.get' .但是,我不知道如何解决这个问题......如何在函数中引用控制器?有关如何纠正此问题或实现相同功能的更好方法的任何建议?

【问题讨论】:

    标签: javascript ruby-on-rails ember.js sweetalert


    【解决方案1】:

    我不知道 coffescript,但也许您可以尝试将控制器分配给变量?

    controller = this; // or @ ? 
    swal({
      title: "Are you sure?"
      text: "You will not be able to recover this post!"
      type: "warning"
      showCancelButton: true
      confirmButtonColor: "#DD6B55"
      confirmButtonText: "Yes, delete it!"
      closeOnConfirm: false
    }, ->
      controller.get('model').destroyRecord().then =>
        controller.transitionToRoute 'posts'
      swal("Deleted!", "Your post has been deleted.", "success")
    )
    

    【讨论】:

    • 我不认为你可以在 ember 控制器中声明变量...我只是尝试它以确保并得到一个错误。
    • 什么意思?你可以'var controller = this;'或任何与其相当的咖啡。
    • 好吧,我想通了!谢谢你的提示。我意识到我必须在删除操作中而不是在通用控制器中创建控制器变量。
    【解决方案2】:

    使用行为:在数据中:

    <%= link_to "Delete", s, :method => :delete, data: { behavior: 'delete' } %>

    $("[data-behavior='delete']").on("click", function(e){
        e.preventDefault();
    
        swal({
            title: "Are you sure you want to delete " , 
            text: "You will not be able to recover this data!", 
            type: "warning", 
            showCancelButton: true, 
            confirmButtonColor: "#DD6B55", 
            confirmButtonText: "Yes, delete it!", 
            closeOnConfirm: false 
        }, function(isConfirm) { 
            if (isConfirm)  
            { 
               // here you can use ajax to delete 
               swal("Deleted!", "Ok , rooms will be delete after submit.", "success"); 
            } 
            else  
            { 
               return false;            
            } 
        }); 
    });
    

    【讨论】:

    • 经过 2 小时的研究和谷歌,我得到了这个:P
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 2015-09-17
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多