交换路线的模型

时间:2014-08-05 00:20:56

标签: javascript ember.js ember-data

我在应用程序模板中有一个显示在页面顶部的购物车的应用程序。然后,在应用程序路径中,我按照以下方式定义模型:

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

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

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

1 个答案:

答案 0 :(得分:1)

路由器在为当前路由连接模型时调用模型挂钩。如果您想在控制器上更改模型,只需抓住控制器并将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