交换路线's模型

Swapping the route's model

本文关键字:模型 交换路      更新时间:2023-09-26

在应用程序模板中,我有一个在页面顶部显示购物车的应用程序。然后,在应用程序路由中,我沿着以下行定义模型:

App.ApplicationRoute = Em.Route.extend
  model: (-> 
    @store.find('cart', @session.get('cart_id')
  ).observes('session.cart_id')

当用户登录时,我想将该购物车替换为从服务器加载的购物车。解决这个问题的最佳方法是什么?

我说到这一点,购物车被加载到Ember Data存储,观察者块被执行,但模板没有使用新模型更新。或者,也许我应该用完全不同的东西?

model钩子是由路由器在为当前路由连接模型时调用的。如果你想改变控制器上的模型,只需抓住控制器并将model属性设置为新模型。

假设会话存在于应用程序路由

App.ApplicationRoute = Em.Route.extend
  updateModel: (-> 
    @store.find('cart', @session.get('cart_id')).then (record) => 
      @controller.set('model', record)
  ).observes('session.cart_id')

(我混合和匹配coffeescript,我只知道它从stackoverflow问题,所以抱歉,如果它是错误的)

示例:http://emberjs.jsbin.com/wedup/1/edit