渲染和重新渲染路由、钩子和 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: 0
从 0
更改为 1
仅通过link-to
helpers(即不通过地址栏重新加载路由)?
解决方案需要在从父级到子级时起作用,反之亦然,所有这些都来自 link-to
帮助者,只是为了清楚。当从父路由到子路由时,我已经使这种行为起作用,反之亦然。
我想做的就是将父路由的 属性 从 0
切换到 1
更新
我想通过在两条路线之间来回导航,基本上将 foo
变量从 1
切换到 0
。想象一下,点击这两条路由之间的 link-to
10 次,每次只看到父路由的 属性 更新为新值。 为什么这不是控制器中的一个简单挂钩?我错过了什么?
徒劳篇
我进行了大量的谷歌搜索,并在路由(beforeModel
、model
、setupController
)和控制器中尝试了许多不同的钩子。我没有成功。如果有的话,欢迎使用一种非常简单的方法来解决这个问题。如果我在这里遗漏了什么,我深表歉意。
类别索引路线
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
进行调试,以确保我的路由名称正确,但这应该可以解决问题
好的。我有一个关于 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: 0
从 0
更改为 1
仅通过link-to
helpers(即不通过地址栏重新加载路由)?
解决方案需要在从父级到子级时起作用,反之亦然,所有这些都来自 link-to
帮助者,只是为了清楚。当从父路由到子路由时,我已经使这种行为起作用,反之亦然。
我想做的就是将父路由的 属性 从 0
切换到 1
更新
我想通过在两条路线之间来回导航,基本上将 foo
变量从 1
切换到 0
。想象一下,点击这两条路由之间的 link-to
10 次,每次只看到父路由的 属性 更新为新值。 为什么这不是控制器中的一个简单挂钩?我错过了什么?
徒劳篇
我进行了大量的谷歌搜索,并在路由(beforeModel
、model
、setupController
)和控制器中尝试了许多不同的钩子。我没有成功。如果有的话,欢迎使用一种非常简单的方法来解决这个问题。如果我在这里遗漏了什么,我深表歉意。
类别索引路线
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
进行调试,以确保我的路由名称正确,但这应该可以解决问题