5

サーバー /projects からすべてのプロジェクトを一覧表示するリソースがあります。/projects/:slug に行く特定のプロジェクトにアクセスできます。

プロジェクト リソースにアクセスすると、Ember Inspector に次のデータが表示されます。

/プロジェクト

id  | Slug              | Title                 |
-------------------------------------------------
1   | first-project     | First project         |
-------------------------------------------------
2   | second-project    | Second project        |
-------------------------------------------------
3   | third-project     | Third project         |

プロジェクトのリストからプロジェクトにアクセスすると、新しい ajax リクエストなしで同じデータを取得し、すべて正常に動作しています。/projects/最初のプロジェクト

/projects/first-projectページを更新すると問題が発生します。Emberはサーバーからデータを取得するためにajaxリクエストを行いますが、データへのIDとしてスラッグを持つ空の行も挿入します。

id              | Slug              | Title                 |
-------------------------------------------------------------
first-project   |                   |                       |
-------------------------------------------------------------
1               | first-project     | First project         |

プロジェクトリストにアクセス中 プロジェクトのリストが表示されていますが、リストの一番上にこの空の行があります。このスラッグ行がデータに挿入されるのはなぜですか? 多分私の論理は間違っています。

<li>
    <a id="ember451" class="ember-view" href="/projects/undefined">
        <script id="metamorph-13-start" type="text/x-placeholder"></script>
        <script id="metamorph-13-end" type="text/x-placeholder"></script>
    </a>
</li>

プロジェクトの私のコード:

App.Router.map(function() {
    this.resource('project', { path: '/projects' }, function() {
        this.resource('project.show', { path: ":post_slug"});
    });
});

App.Project = DS.Model.extend({
    slug: DS.attr("string"),
    title: DS.attr("string")
});

App.ProjectIndexRoute = Ember.Route.extend({
    model: function() {
        return this.store.find('project').then(function(data) {
            return data;
        }); 
    }
});

App.ProjectShowRoute = Ember.Route.extend({
    model: function(params) {
        return this.store.find('project', params.post_slug).then(function(data) {
            return data;
        }); 
    },
    serialize: function(model) {
        return { post_slug: model.get("slug") };
    }
});

私は使用しています:

DEBUG: ------------------------------- 
DEBUG: Ember      : 1.1.2 
DEBUG: Ember Data : 1.0.0-beta.3 
DEBUG: Handlebars : 1.0.0 
DEBUG: jQuery     : 1.9.1 
DEBUG: ------------------------------- 
4

3 に答える 3

0

電話することで

store.find('project', 'first-project')

スラッグを主キーとして扱っています。それが新しいレコードが初期化される理由だと思います(おそらく数字である最初のプロジェクトの実際の主キーを持つものと、主キーとして「first-project」を持つものがあります。呼び出してモデルフックを変更してみてくださいあなたの場合、検索オプションのハッシュを使用したスト​​アの find() メソッド:

store.find('project', { slug: 'first-project' })
于 2013-11-01T14:05:43.317 に答える