(Ember.js)如何在不相关的资源/路线中共享模型数据?

时间:2015-05-26 00:13:00

标签: ember.js

在不共享父资源/路由的资源/路由之间共享模型数据的最佳方式(Ember方式)是什么?

详细说明:

我有2个顶级资源(resource1和resource2),其模型钩子通过Ajax检索几乎相同的数据,因此它们的模型钩子代码看起来几乎相同,即不是很干。不同之处在于他们各自对数据的处理方式。

目标:保留resource1和resource2顶级资源(或者至少让他们的网址看起来像是顶级资源),让他们共享一些模型数据而不重复模型钩子代码。

资源/路线定义:

App.Router.map(function () {
    ...
    this.resource("resource1", function () {
        this.route("routeA");
        this.route("routeB");
    });
    this.resource("resource2", function () {
        this.route("routeA");
        this.route("routeB");
    });
    ...
}  

所需的网址:

example.com/#/resource1/routeA
example.com/#/resource1/routeB

example.com/#/resource2/routeA
example.com/#/resource2/routeB  

NOT [嵌套在公共资源中],如下所示:

example.com/#/resource0/resource1/...
example.com/#/resource0/resource2/...

提前致谢!

1 个答案:

答案 0 :(得分:0)

这对我有用:

App.Router.map(function () {
    ...
    this.resource("resource0", { path: "/" }, function () {
        this.resource("resource1", function () {
            this.route("routeA");
            this.route("routeB");
        });
        this.resource("resource2", function () {
            this.route("routeA");
            this.route("routeB");
        });
    }
    ...
}

指定resource0' /"基本上删除" resource0"从URL路径,使resource1和资源2看起来像顶级资源。然后我将resource1和resource 2中的任何重复模型钩子代码分解为resource0的模型钩子。