以下是我的路线:
this.resource('kb_obj', {path: '/kb/:data_type'}, function() {
this.resource('kb_obj_show', {path: '/:id'}, function() {
this.route('with_breadcrumb', {path: '/:breadcrumb'});
});
this.resource('kb_filtered_page', {path: '/:filter_params/page/:page_id'}, function() {
this.route('index', {path: '/'});
});
});
如您所见,KbObjRoute的主要工作是存储当前数据类型。
我的问题是当有人点击这样的链接时:
{{#linkTo 'kb_obj_show.with_breadcrumb' this this}}{{name}}{{/linkTo}}
KbObjRoute上未触发model
或setupController
方法,因此它永远不会更新其数据类型,并且任何依赖于该信息的内容(例如主导航链接)都不会获得更新。
我无法看到如何通知父路线其子女的情况。
我错过了什么吗?
谢谢!
答案 0 :(得分:0)
我认为这里可能存在两种误解
网址/kb/image
可能会加载一堆图像作为模型。 /kb/image/123
是其中一张图片。更改123
的data_type不会冒泡并更改动态细分。
话虽如此,路线和控制器可以通过几种方式相互依赖。
使用路线,您可以使用modelFor
方法,在您认为可能的情况下:
this.modelFor('kb_obj')
使用控制器,您将使用needs
数组。因此,如果您想从另一个控制器获取模型或属性,您可以这样做:
App.SubController = Ember.ObjectController.extend({
needs: "otherController",
linkedProperty: Ember.computed.alias("controllers.otherController.model.itsProperty")
});