我是Ember.js的新手,我正在尝试通过重写我的旧应用程序来学习它。不幸的是,我很早就陷入困境,需要一些帮助,因为无法在网上找到答案。
我有以下代码:
App = Ember.Application.create({
LOG_TRANSITIONS: true
});
App.Router.map(function () {
this.resource("users", function () {
this.resource("score", {path: "/:nickname"});
});
});
App.UsersRoute = Ember.Route.extend({
model: function () {
var url = "server url";
return new Ember.RSVP.Promise(function (resolve, reject) {
resolve($.getJSON(url));
});
}
});
App.ScoreRoute = Ember.Route.extend({
model: function () {
var url = "server url" + "?nickname=";
url += passedNicknameFromclickedLink;
return new Ember.RSVP.Promise(function (resolve, reject) {
resolve($.getJSON(url));
});
}
});

<script type="text/x-handlebars">
<nav>
{{#link-to "users"}}Users{{/link-to}}
</nav>
<main class="main-wrapper">{{outlet}}</main>
</script>
<script type="text/x-handlebars" data-template-name="users">
<div class="user-score">{{outlet}}</div>
<h2>Users</h2>
{{#each}}
<div>{{#link-to "score" nickname}}{{nickname}}{{/link-to}}</div>
<div>{{games}}</div>
<div>{{score}}</div>
{{/each}}
</script>
<script type="text/x-handlebars" data-template-name="score">
<h2>Score for {{nickname}}</h2>
{{#each categoryScores}}
<div class="scores">
<div>{{category}}</div>
<div>{{gamesPlayed}}</div>
<div>{{score}}</div>
</div>
{{/each}}
</script>
&#13;
我要做的是在&#34;用户&#34;的{{#link-to}}中点击用户点击的{{nickname}}属性。模板并将其传递给&#34;传递尼克名字点击链接&#34;变量到App.ScoreRoute以发出服务器请求。我想知道这样做的正确方法是什么?
答案 0 :(得分:0)
看起来你几乎一切都正常,你只需要2件事。首先,您可以使用params参数访问nickname
挂钩中的model
动态细分。
model: function(params) {
var passedNicknameFromclickedLink = params.nickname;
}
其次,因为Ember假设您的路线和模型有很多惯例,所以您也必须覆盖路线中的serialize方法。使用serialize
方法,您要做的是从您的模型(服务器中的JSON)开始,并返回用于查找该模型的昵称。我不确切知道你的JSON是什么样的,但它可能看起来像这样:
serialize: function(model) {
return encodeURI(model.nickname);
}