渲染和重新渲染路由、钩子和 Ember

Rendering and re-rendering routes, hooks and Ember

好的。我有一个关于 ember 如何处理路由重新渲染的简单问题...

应用程序

资料

-------------------------------
Ember      : 1.8.1
Ember Data : 1.0.0-beta.12
Handlebars : 1.3.0
jQuery     : 1.11.2
-------------------------------

Teh 代码

router.js

this.resource('categories', {path: '/categories'}, function(){
    this.resource('category', {path:'/:cid'});
});

我有两个非常简单的嵌套模板。一个叫 categories,一个叫 category。它们的工作方式与您预期的一样。 但是我的ember应用程序没有在应用程序中定义视图,只有模板。

问题

如何更改父路由控制器的简单 属性,例如从父路由到子路由时将 foo: 00 更改为 1 仅通过link-to helpers(即不通过地址栏重新加载路由)?

解决方案需要在从父级到子级时起作用,反之亦然,所有这些都来自 link-to 帮助者,只是为了清楚。当从父路由到子路由时,我已经使这种行为起作用,反之亦然。

我想做的就是将父路由的 属性 从 0 切换到 1

更新

我想通过在两条路线之间来回导航,基本上将 foo 变量从 1 切换到 0。想象一下,点击这两条路由之间的 link-to 10 次,每次只看到父路由的 属性 更新为新值。 为什么这不是控制器中的一个简单挂钩?我错过了什么?

徒劳篇

我进行了大量的谷歌搜索,并在路由(beforeModelmodelsetupController)和控制器中尝试了许多不同的钩子。我没有成功。如果有的话,欢迎使用一种非常简单的方法来解决这个问题。如果我在这里遗漏了什么,我深表歉意。

类别索引路线

afterModel: function(model, transition){
    if(Ember.isEqual(this.controllerFor('application').currentRouteName, "categories.index"))
    {
       this.controllerFor('categories.index').set('foo', 0);
    }
}

类别路线

afterModel: function(model, transition){
    if(Ember.isEqual(this.controllerFor('application').currentRouteName, "category"))
    {
        this.controllerFor('categories.index').set('foo', 1);
    }
}

在每个页面上对 this.controllerFor('application').currentRouteName 进行调试,以确保我的路由名称正确,但这应该可以解决问题