5

私は ui-grid と 306_expandable_grid に取り組んでいます。ドキュメントと同じコードを使用しましたが、エラーの問題に直面しています。

app.js

$http.get('resources/data/title2.json')
    .success(function(data){

        console.log(data);
        console.log(data[0].Data);
        console.log(data.length);
        for(i = 0; i < data[i].length; i++){
           data[i].subGridOptions = {
                  columnDefs: [ 
                    {name:"Title" },
                    {name:"Jan-10" },
                    {name:"Feb-10"},
                    {name:"Mar-10" },
                    {name:"Apr-10" },
                    {name:"May-10" },
                    {name:"Jun-10" },
                    {name:"Jul-10" },
                    {name:"Aug-10" },
                    {name:"Sep-10" },
                    {name:"Oct-10" },
                    {name:"Nov-10" },
                    {name:"Dec-10" }
                ],
              data: data[i].Data
          }
      }
        // $scope.subGridOptions.data = data;
        $scope.gridOptions.data = data;
        // $scope.title = data[0].Title;
    });

externalHtmlFile.html

<div ui-grid="row.entity.subGridOptions" style="height:150px;"></div>

これは私が立ち往生しているエラーです

 TypeError: Cannot read property 'data' of undefined
    at new <anonymous> (http://localhost/ng-Grid/resources/scripts/ui-grid-unstable.js:2883:41)
    at Object.e [as invoke] (http://localhost/ng-Grid/resources/scripts/angular.min.js:36:456)
    at E.instance (http://localhost/ng-Grid/resources/scripts/angular.min.js:75:118)
    at http://localhost/ng-Grid/resources/scripts/angular.min.js:58:276
    at r (http://localhost/ng-Grid/resources/scripts/angular.min.js:7:408)
    at M (http://localhost/ng-Grid/resources/scripts/angular.min.js:58:260)
    at http://localhost/ng-Grid/resources/scripts/angular.min.js:65:412
    at http://localhost/ng-Grid/resources/scripts/angular.min.js:109:276
    at h.$eval (http://localhost/ng-Grid/resources/scripts/angular.min.js:123:139)
    at h.$digest (http://localhost/ng-Grid/resources/scripts/angular.min.js:120:220)

プラスアイコンをクリックすると、エラーが発生します...私が理解できる解決策を見つけることができませんでした。助けてください

4

1 に答える 1

10

まず、コールバック$scope.gridOptionsの外で初期化することを確認してください$http.get success。コールバック内に$scope.gridOptions.data[i].subGridOptionsto を追加するだけです。参考$scope.gridOptionssuccess

成功の呼び出しでグリッド オプションを定義することはできません。コントローラーのスコープでそれらを定義し、データまたは列の定義などを設定する必要があります...成功呼び出しから。

次に、グリッド/ページのコントローラーに初期化パラメーターに依存するリダイレクトがないことを確認します。ページに次のコードがあったため、同じエラーメッセージが生成されました。

if (typeof clientcode === 'string' && clientcode !== '') {

    var payload = {
        clientcode : storedClientcode
    }

} else {

    $location.path('/');

}

ここでのアイデアは、storedClientcode(共有アプリ ルート サービスを介して) 呼び出しページによって提供されたかどうかを確認し、提供されていない場合はアプリケーション ホームにリダイレクトすることでした。しかし、ui-grid はどうやら on のページに個別のサブコールを作成し、それらのサブコールはもちろん、コードで探していたデータを提供しないため、それらの呼び出しの舞台裏でリダイレクトが発生しました。エラーは発生せず (表示されたもの以外)、グリッドにデータは表示されませんでした。これを理解するのに少し時間がかかりました(私はAngularJSにかなり慣れていませんが、これは私にとってui-gridの最初のアプリケーションでした..うまくいけば、この質問が解決されなくても、これが誰かの助けになることを願っています.

于 2014-10-30T23:48:18.630 に答える