0

私は次の設定をしています。各アカウントは複数のプロファイルを持つことができます

app.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();
    }
});

accounts.hbs:

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

プロファイル.hbs:

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

ただし、これは機能していません。アカウント名の 1 つをクリックしても、アウトレットには何も表示されません。また、{{#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
    }
});

accounts.hbs:

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

account.hbs:

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

チョッパーの答えは、取得したアカウント オブジェクトに既にプロファイルのリストが埋め込まれている場合に機能します。ただし、これは私のセットアップには当てはまりません (おそらく、十分に明確にしていませんでした)。これを解決する方法は、「fetch_profiles」アクション ハンドラーを使用してアカウント ルートにアクション ハッシュを設定し、アカウント ルートからトリガーされ、クリックされたアカウントをアクション パラメーターとして渡すことです。このアクションは、AJAX 呼び出しでプロファイルのリストを取得し、アプリをプロファイル ルートにリダイレクトします。したがって、この場合、リンク先ヘルパーは使用していません。

于 2013-10-16T23:52:27.390 に答える