找到模型钩子上的方法,而不是用链接来解决这个问题

时间:2015-02-22 01:59:16

标签: ember.js

对于CompaniesRoute,我为每个项目呈现链接:

{{#link-to 'company' id}}The name should change here:{{name}}{{/link-to}}

我有一个(CompanyRoute)路线,用于渲染模板以编辑对象。 "发现"调用模型钩子上的方法(AJAX请求)。

但是,如果我在CompanyController(ObjectController)中编辑对象,它不会反映回CompaniesRoute(CompaniesController)中的项目。

我对路线的理解是模型钩子只有在它不知道模型时才被调用。

所以当我这样做时:

{{#link-to 'company' this}}The name should change here:{{name}}{{/link-to}}

现在它正常工作,现在当我进入编辑模式时,名称(以及任何其他相关属性)会发生变化。

然而,现在的问题是"发现"没有调用CompanyRoute的模型钩子上的方法(AJAX请求)。它假定模型已经存在,因此它只使用现有模型,在调用" all"时使用有限属性。 CompaniesRoute模型钩子上的方法。

我的问题是如何解决这个问题,以便在我使用后者时调用它(查找方法){{#link-to' company' this}})链接到方法?

注意:我也在Router.map上使用嵌套资源。即:

this.resource('companies', function() {
    this.resource('company', {path:':company_id'});
}

注2:我没有使用Ember数据

1 个答案:

答案 0 :(得分:0)

玩完之后发现我必须在CompanyRoute上添加setupController:

setupController: function(controller, model) {
    controller.set('model', App.CompanyAdapter.find(model.id));
    this._super(controller, model);
}

现在每次都会触发请求,并根据具有此属性的链接帮助程序相应地反映更改。