0

我有以下设置。每个帐户可以有多个配置文件

应用程序.js:

App.Router.map(function () {
    this.resource("accounts", function () {
        this.resource("profiles", {path: "/:account_id"})
    })
});

App.Account = Ember.Object.extend({
    findAll: function () {
        // Ajax request to fetch data from the server
    }
});

App.AccountsRoute = Ember.Route.extend({
    model: function () {
        return App.Account.findAll();
    }
});

App.Profile = Ember.Object.extend({
    findAll: function () {
        // Ajax request to fetch data from the server
    }
});

App.ProfilesRoute = Ember.Route.extend({
    model: function () {
        return App.Profile.findAll();
    }
});

帐户.hbs:

{{#each model}}
    {{#linkTo "profiles" tagName="li"}}
        {{accountName}}
    {{/linkTo}}
{{/each}}
{{outlet}}

个人资料.hbs:

{{#each model}}
    {{profileName}}
{{/each}}

但是,这是行不通的。每当我单击其中一个帐户名称时,插座中都没有显示任何内容。如果我在 {{#linkTo "profiles" this tagName="li"}} 中传递“this”,那么我会收到一条错误消息,指出 Ember 无法遍历不是数组的东西。当父路由都具有数组控制器并且子模板显示在父路由的插座中时,您将如何从父路由链接到子路由?

4

2 回答 2

1
App.Router.map(function () {
    this.resource("accounts", function () {
        this.resource("account", {path: "/:account_id"})
            this.resource("profiles", function () {
                this.resource("profile", {path: "/:profile_id"})
            }
        }
    })
});

App.Account = Ember.Object.extend({
    findAll: function () {
        // Ajax request to fetch data from the server
    }
});

App.AccountsRoute = Ember.Route.extend({
    model: function () {
        return App.Account.findAll();
    }
});

App.Profile = Ember.Object.extend({
    findAll: function () {
        // Ajax request to fetch data from the server
    }
});

帐户.hbs:

{{#each content}}
    {{#linkTo "account" this tagName="li"}}
        {{accountName}}
    {{/linkTo}}
{{/each}}
{{outlet}}

帐户.hbs:

{{#each profiles}}
    {{profileName}}
{{/each}}
于 2013-10-04T17:27:37.403 回答
0

如果检索到的帐户对象已经在其中嵌入了配置文件列表,则 chopper 的答案有效。但是,在我的设置中并非如此(也许我没有说得足够清楚)。我解决这个问题的方法是使用“fetch_profiles”操作处理程序在账户路由中设置一个操作哈希,从账户路由触发并将点击的账户作为操作参数传递。该操作通过 AJAX 调用检索配置文件列表,然后将应用程序重定向到配置文件路由。所以在这种情况下,我没有使用链接到帮助器。

于 2013-10-16T23:52:27.390 回答