Ember 1.0.0 と Ember Data (ベータ版) の最新ビルドを使用していますが、動作していない動的セグメントを含むルートがあります。
以下のルートを定義しました。
PwdMgr.Router.map(function() {
this.resource("passwords", function(){
this.resource("password", {path: "/:password_id"}, function(){
this.route("edit");
});
});
}
テンプレート passwords.index では、次のようなモデルのリストを表示します。
{{#each}}
<tr>
<td>{{id}}</td>
<td>{{name}}</td>
<td>{{client.name}}</td>
<td>{{service.name}}</td>
<td>{{localisation.name}}</td>
<td>{{status.name}}</td>
<td>{{login}}</td>
<td>{{password}}</td>
<td>
{{#link-to 'password.index' this}}<span class="glyphicon glyphicon-search"></span>{{/link-to}}
{{#link-to 'password.edit' this}}<span class="glyphicon glyphicon-pencil"></span>{{/link-to}}
<span class="glyphicon glyphicon-remove" {{action 'edit' password}}></span>
</td>
</tr>
{{/each}}
私は 2 つのリンクを持っています。1 つはルート password.index に行き、もう 1 つはルート passwword.edit に行きます。動的セグメントのモデルを提供すると、ハンドルバーによって URL が正しく作成されます (/passwords/1 および /passwords/1/edit)。
私の問題は、URL /password/1 (または /password/1/edit) に到達すると、モデルが単一のオブジェクトではなく、オブジェクトの配列になることです。
ガイドで説明されているように、デフォルトのパターンを使用しているため、Route オブジェクトをセットアップしませんでした。しかし、デバッグ目的で、password.index ルートのルート オブジェクトを作成しました。外観は次のとおりです。
PwdMgr.PasswordIndexRoute = Ember.Route.extend({
model: function(params){
console.log(params);
return this.get('store').find('password',params.password_id);
},
setupController: function(controller, model){
console.log(model);
}
});
そして、ここに私のコンソールログがあります:
Object {} app.js (line 31)
<DS.RecordArray:ember435> { content=[3], store=<DS.Store:ember506>, isLoaded=true, more...} app.js (line 35)
空のオブジェクトは、オブジェクトの配列を取得する理由を説明していますが、params 変数が空のオブジェクトである理由はありますか?
どうもありがとう
[編集]
Router.map を次のように変更しました。
PwdMgr.Router.map(function() {
this.resource("passwords", function(){
this.route("detail", {path: "/:password_id"});
this.route("edit", {path: "/:password_id/edit"});
});
}):
また、「詳細」ルートと「編集」ルートの両方の動的セグメントは正常に機能します。問題は、動的セグメントがネストされたリソースにあるという事実にあると思います。これは、Emberjs ガイドの例がネストされたリソースの動的セグメントを使用しているため、奇妙です。