1

ExtJS 4.2 MVC: ServiceM と CommentsM の 2 つのモデルがあります。ServiceM は CommentsM との関連付け (hasmany) を持っています。必須セクション ServiceM を追加するのを忘れていませんでした。Proxy は、モデル自体で定義された ajax タイプです。また、それぞれのストアを作成しました。ビューに来ると、アプリケーションのロード時に派生するすべてのサービスを表示するためのグリッドがあります。itemdblclick イベントは、フォームを拡張するウィンドウであるサービスに関する詳細ビューを提供するために使用されます。フォームは、次のコードによって入力されます。

   var ServiceDetailV = Ext.widget('alias name of the service detail view');
   ServiceDetailV.down('form').getForm().loadRecord(record);

ここで 2 つの質問があります。

  1. Google Chrome で開発者ツールを使用する場合、上記のコードでデバッガーを配置します。最後に。レコードを強調表示し、右クリックしてその部分を評価しました。データ部分と生部分が見えます。この生の部分は何ですか。サーバーが提供するすべてのデータ (ペイロード) があり、サービス データに関連付けられているネストされたコメント セクションも含まれます。
  2. フォームのフィールドに入力することはできますが、コメントのリストには入力できません。コメントのリストは、フォームに存在するパネルに入ります。コメント セクションに入力するにはどうすればよいですか。

JSON データ:

{
"data": [
    {
        "id": 1,
        "x": "some text",
        "q": "some text",
        "a": "some text",
        "r":"some text",
        "comments": [
            {
                "id": 87,
                "commentDate": "date",
                "description": "some text"
            },
            {
                "id": 86,
                "commentDate": "date",
                "description": "some text"
            }
        ]
    }  "total": 1,
"success": true}

では、コメント フィールドにアクセスして、フォームにこのデータを入力するにはどうすればよいでしょうか。

Associations ExtJs MVC に関する知識を流してください。

乾杯!

4

1 に答える 1

0

さて、私は一歩を踏み出し、これに対する解決策を得ました。raw パラメータには、実際には未加工の JSON ペイロードがあります。コントローラー部分では、選択イベントを介して処理しました。

onSelectIssueShowComments : function(selection,record, index, eOpts) {
                        this.getComments().setRecord(record.raw);
                    }

私はビュー部分

tpl : [ '<p>Previous Comments: ', '<tpl for="comments">',
            '<p>{#}. {description}       {commentDate}</p>', '</tpl></p>' ],

    setRecord : function(record) {//this record here is record.raw
        this.record = record;

        if (record) {
            this.update(record);
        } else {
            this.update(' ');

        }
    }

したがって、パネルにコメントの配列が表示されます。

于 2013-09-11T17:40:25.720 に答える