【问题标题】:Async operations in modal callback模态回调中的异步操作
【发布时间】:2014-08-27 08:51:38
【问题描述】:

我正在使用语义 UI 模式来允许用户插入数据。它有一个 onApprove 回调,允许您在出现任何问题时返回 false 以保持模式打开。我的数据被插入到数据库中,如果有任何错误,它会返回 false。如果在此异步操作期间出现错误,保持模式打开的最佳方法是什么?

这是我的代码(coffeescript):

$('#verification-modal')
.modal('setting', {
    detachable: false,
    onApprove: validateVerificationForm
    closable: false
})

 validateVerificationForm = () ->
      formData = $('.form').serializeArray()
      formatted = format($formData);

      ID_Details.insert(formatted, (errs, id) ->
         if errs
             false
         else
            true

显然,匿名函数将 true/false 返回到函数的上下文中。将其返回到模态的最佳方法是什么?

【问题讨论】:

  • 您可以在所有条件下成功返回 false,然后使用 $('.modal').modal('hide') 关闭它

标签: javascript coffeescript meteor semantic-ui


【解决方案1】:

您可以使用局部反应变量:

var data = new ReactiveDict();

Template.modalTemplate.created = function() {
  data.set('isError', false);
};

Template.modalTemplate.helpers({
  isError: function() {
    return data.get('isError');
  },
});

var yourMethodWithAsync = function() {
  ...
  async(..., function(error) {
    if(error) {
      data.set('isError', true);
    }
    ...
  });
};

【讨论】:

  • 这是一个很酷的想法,但不起作用 isError: function() { yourMethodWithAsync() return data.get('isError'); return data.get('isError') 立即计算,因此将返回上次计算的结果,而不是当前的。
猜你喜欢
  • 2016-01-16
  • 2023-03-16
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多