我有以下设置。 每个帐户都可以有多个配置文件。
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}}
profiles.hbs:
{{#each model}}
{{profileName}}
{{/each}}
但是,这不起作用。每当我点击其中一个帐户名称时,插座中都没有显示任何内容。如果我在{{#linkTo“profiles”这个tagName =“li”}}中传递“this”,那么我会收到一条错误消息,指出Ember无法循环通过不是数组的东西。当它们都有阵列控制器并且子模板显示在父级插座中时,您将如何从父路由链接到子路由?
答案 0 :(得分: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}}
答案 1 :(得分:0)
chopper的答案有效。然而,在我的设置中并非如此(也许我没有说清楚)。我解决这个问题的方法是在帐户路由中设置一个动作哈希,使用“fetch_profiles”动作处理程序,从帐户路由触发并将点击的帐户作为动作参数传递。该操作使用AJAX调用检索配置文件列表,然后将应用程序重定向到配置文件路由。所以在这种情况下我没有使用链接帮助器。