Ember:在transitionTo之后执行代码

时间:2014-06-18 22:21:03

标签: ember.js

我有一个新资源的控制器,在保存时,打算转换到其页面,然后触发闪存通知。我无法使用Flash通知。

App.StoriesNewController = Ember.ObjectController.extend
  ...
  actions:
    updateStory: ->
      if @get('model.isValid')
        @get('model')?.save().then (data) =>
          @transitionTo('story', @get('model'))
          Example.flash(success: 'The story was successfully updated.')
        , (reason) =>
          message = (e for _, e of reason.errors).join("\n")
          Example.flash(error: message)
      else
        Example.flash(error: 'Please fill out required fields')
      return false

我已尝试在转换之前,转换之后或作为承诺的结果放置闪存,例如

@transitionTo('story', @get('model')).then =>
  Example.flash(success: 'The story was successfully updated.')

这些都不起作用。我唯一需要工作的是使用超时:

@transitionTo('story', @get('model')).then =>
  setTimeout(-> 
          Example.flash(success: 'The story was successfully updated.')
  , 100)

但这感觉特别不雅。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

亚历,

我不认为你已经告诉我们你的" Flash消息"。这种观点在哪里生活?是在应用程序模板中还是在StoriesNew模板中?

我问的原因是,一旦您启动了转换,您应该假设您当前的视图不再可见(情况可能并非总是如此,但它是一个安全的假设)。

以下是您所描述的JSBin示例:http://emberjs.jsbin.com/yixuwamo/5