4

概念実証アプリに取り組んでおり、データ ストレージについて質問があります。

私のアプリにはクライアント モデルがあります

PM.Client = Ember.Object.extend({
    id: null,
    client: null,
    projects: {}
});

およびプロジェクト モデル

PM.Project = Ember.Object.extend({
    id: null,
    title: null,
    totalHours: null,
    cost: function(){
        return this.get('totalHours') * PM.get('rate');
    }.property('totalHours')
});

各クライアントは複数のプロジェクトを持つことができますが、各プロジェクトは 1 つのクライアントしか持つことができません。現在、次のデータを含むダミーの JSON ファイルがあります

[
    {
        "id": "1",
        "client": "Fastbook",
        "projects": [
            {
                "id": "1",
                "title": "Website redesign",
                "totalHours": "45",
                "cost": "4500"
            },
            {
                "id": "2",
                "title": "Tidy up admin section",
                "totalHours": "10",
                "cost": "1000"
            }
        ]
    },
    {
        "id": "2",
        "client": "Epicenter",
        "projects": [
            {
                "id": "1",
                "title": "Chaching",
                "totalHours": "25",
                "cost": "2500"
            }
        ]
    }
]

このデータを Ember 内に保存する最良の方法は何ですか? クライアント用とプロジェクト用に別の arrayController を用意する必要がありますか?

Ember Data は問題ないかもしれませんが、REST をセットアップする予定はありません。Ember Data は localStorage を使用できますか?

4

4 に答える 4

1

私が取り組んでいる ember フィード リーダーにネストされたデータがあります。

2 つのアレイ コントローラを使用します。一連のフィードがあり、各フィードにはエントリが含まれています。

私の使用では、フィードを選択すると含まれるエントリが表示されますが、feedController、selectedFeedController、entryController、および selectedEntryController があります。

これにより、かなりきめ細かい制御が可能になります。それがあなたを始めさせてくれることを願っており、おそらくこれがあなたにとって適切なモデルではないかどうかを判断してください.

于 2012-06-04T15:46:52.717 に答える
1

アプリケーションが何をするかについて、これ以上の詳細なしに言うのはやや難しいです。

クライアントには を使用ArrayControllerします。そのデータはクライアントオブジェクト内にネストされているため、プロジェクト用に1つ必要があるとは思いません。プロジェクトが選択されるディスプレイがある場合、現在選択されているプロジェクトのコントローラーが必要になる場合があります。

プロジェクト データで何をしようとしているのかをさらに詳しく説明していただければ、より適切なアドバイスができます。

于 2012-06-03T08:25:03.043 に答える
0

最後のウォッシュでは、プロジェクト リストが添付されたクライアント詳細ビューと、クライアント全体でアクティブなすべてのプロジェクトを含むプロジェクト リスト ビューが表示されると思います。

オブジェクト モデルがユース ケースを決定するのではなく、ユース ケースがオブジェクト モデルを決定します。上記のシナリオが必要な場合、クライアント ArrayController しかない場合は、おそらく苦労することになるでしょう。この場合、クライアントとプロジェクトの両方の ArrayController を使用する方が自然です。

于 2012-06-03T23:01:18.923 に答える
0

@Davidと@ebrynに同意します。ユースケースに完全に依存します。たとえば、常にユーザー データとプロジェクト データを一緒に使用しますか? 特にデータがすでにネストされているため、個別の配列コントローラーは必要ありません。

しかし、懸念事項を明確に分離したい場合は、実際に 2 つの別個のコントローラーを検討する必要があります。

また、localstorage からのみデータを読み取るには、独自のアダプターを定義する必要があります。組み込みのメソッドはありません。独自のアダプターを構築するための手順については、readme の末尾にあるember data github ページに詳しく説明されています。

于 2012-06-04T03:26:15.440 に答える