0

データをストアにロードする適切な方法を知りたいです。ルーターを次のように定義しています。

this.resource('analyticsTemplates', { path: 'templates' });
this.resource('analyticsTemplate', { path: 'templates/:analytics_template_id' });

「analyticsTemplates」ルートでは、テーブル内のすべてのテンプレートを一覧表示するハンドルバー テンプレートと、送信時にストアに新しいレコードを追加してテーブルを更新するフォームを含むモーダル ボックスを開く追加ボタンを定義しました。現在、私のフォームはファイル入力フィールドを使用しているため、使用しませんでした

this.get('model').save()

これにより、ストアが適切に同期されます。代わりに、フォームが送信されると、フォームが非表示の iframe に投稿され、この iframe の本文コンテンツに、現在追加されているレコードを表す json データが入力されます。戻りデータは次のようになります。

{
    "analyticsTemplate": {
        "id": 6,
        "name": "deee",
        "description": "asdasdasd",
        "csFileName": "commandScript.txt",
        "csLastUpdatedBy": "Deewendra Shrestha",
        "csLastUpdated": "2013-10-22T18:00:54Z",
        "dateCreated": "2013-10-22T18:00:54Z",
        "lastUpdated": "2013-10-22T18:00:54Z",
        "createdBy": "Deewendra Shrestha",
        "lastUpdatedBy": "Deewendra Shrestha",
        "parameters": {
            "homeDir": {
                "category": "global",
                "description": "Where is the analytics folder",
                "name": "homeDir",
                "value": "Q:/Reckitt Benckiser/2013/RB_Steroid/Analytics/IntergerateTest_DONOTUSE"
            },
            "historyDir": {
                "category": "global",
                "description": "Where R image will be saved",
                "name": "historyDir",
                "value": "Rhistory"
            },
            "Sourcefolder": {
                "category": "type 1",
                "description": "Where are source codes and functions are saved",
                "name": "Sourcefolder",
                "value": "J:/_MRO/Analytics/Analytics_R_Source_Scripts"
            },
            "resultsDir": {
                "category": "global",
                "description": "Where are results stored",
                "name": "resultsDir",
                "value": "results"
            },
            "dataDir": {
                "category": "opt",
                "description": "Where is raw csv stored",
                "name": "dataDir",
                "value": "Export"
            },
            "testParam": {
                "category": "global",
                "description": "some long sentence repeated multiple times. some long sentence repeated multiple times. some long sentence repeated multiple times.",
                "name": "testParam",
                "value": "some long sentence repeated multiple times. some long sentence repeated multiple times.some long sentence repeated multiple times."
            }
        }
    }
}

コントローラーで2つのことを試しました:

this.get('store').push('analyticsTemplate',jsonData["analyticsTempalte"]);

また :

var newRecord = this.get('store').createRecord('analyticsTemplate');
for(var key in jsonData["analyticsTemplate"]){
    o.set(key,jsonData["analyticsTemplate"][key]);
}

上記の方法のいずれかを使用して、テーブルにリストされた新しいレコードを確認できましたが、レコードをクリックして「analyticsTemplate」ルートにドリルダウンすると (posts->post からの移動と同様)、次の js エラーが発生します。

parameters.forEach(function (parameter) {
    discreteCategories[parameter.get('category')] = 1;
});

パラメータを ArrayProxy に変換する DS.transform を定義しましたが、レコードをロードしたときにこの変換が実行されていないと思います。そのため、子ルートはパラメータを処理する方法がわかりません。では、この場合、どのように変換を適用できますか?

申し込めばいいのに:

this.get('モデル').reload()

しかし、これは ObjectController コンテキストで機能し、ArrayController では機能しないようです。アイデア/代替案はありますか?

4

1 に答える 1