2017-08-29 12 views
0

私は、次のルータとエンバープロジェクトを持って次のようにroutes/index/folder.jsルートが変更されたときにHTTPリクエストが発行されないのはなぜですか?

import Ember from 'ember'; 
import config from './config/environment'; 

const Router = Ember.Router.extend({ 
    location: config.locationType, 
    rootURL: config.rootURL 
}); 

Router.map(function() { 
    this.route('index', {path: '/'}, function() { 
    this.route('folder', {path: 'folder/:folder_id'}); 
    }); 
}); 

export default Router; 

内容は以下のとおりです。

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model(params) { 
    console.log(params); 
    return this.store.query('message', {folder_id: params.folder_id}); 
    } 
}); 

私の期待はルートが/folder/1に変化したとき、model()方法が可能になるということですそのフォルダのメッセージを取得するために呼び出されます。

ただし、これは発生しません。実際には経路は変更されますが、model()メソッドは呼び出されません(コンソールには何も書き込まれません)。

私には何が欠けていますか?

答えて

2

私が推測しなければならないのであれば、{{#link-to 'index.folder' aModel}}を使用しています。すでにモデルが用意されているので、再度フェッチする必要はありません。 {{#link-to 'index.folder' aModel.id}}を実行した場合、モデルが提供されていないため、modelフックが再度トリガーされます。

このTwiddleでは、モデルフックがパスfolder/12(リンク先経由ではありません)を直接訪問して呼び出されることがわかります。

Routing Guideについては、これについて詳しく説明します。

+0

Aha!良い推測とリンクのおかげで。 –

0

は、コマンドラインから燃えさしのCLIを使用してルートを生成するようにしてください: ember g route folder

それはあなたが適切な場所に必要なすべてのファイルを作成し、また、それに応じてrouter.jsを編集します。

この方法では、あなたは/folderに回答するルートを取得すると思います。 router.jsを変更し、ルートのパスを追加して/folder/1を押します。何も起こらない場合はコンソールにエラーがないかチェックしてください。messageモデルが存在しない可能性があります。

関連する問題