1

誰か助けてくれませんか?

私は1つのhtmlファイルと$ routeProviderを介して割り当てられたコントローラーを持っています

          .when('/', {
            templateUrl: 'views/contents.html',
            controller: 'FirstCtrl'

すべてが正常に機能していました。ビューにオブジェクトに対して ng-repeat を実行させ、ビューをそのように更新しました

   <tbody ng-repeat="item in contents.data">
     <tr>        

このコードは正常に機能していました。FirstCtrl を使用してアイテムを次のように更新しました。

   $scope.contents = {};
   $scope.contents.data = {...}

この機能を独自のコントローラーに抽出しましたが、それでも同じビューなので、1つのビューと2つのコントローラーがあります... 2番目のコントローラーは、tbodyでng-controllerを指定することで使用されます。

   <tbody ng-controller="SecondCtrl" ng-repeat="item in contents.data">
     <tr>

これで、コントローラが機能していることがわかります。$scope も 2 番目のコントローラーから更新していますが、これも空白のようです。

ドキュメントから、 $scope が親コントローラーに存在する場合(最初)、子コントローラーがそれを上書きする(2番目)と記載されていますが、これは私の場合ではなく、最初のコントローラーで定義されていません。

私も簡単なテストを試しました

    $scope.testme = "hi";

とビュー

    {{ testme }}

そして何も... $scopeが存在しないようです。

誰が何が起こっているのか知っていますか?私はそれを正しく使用していますか?

前もって感謝します

4

1 に答える 1

3

$scope.contents を SecondCtrl 内で初期化している場合は、おそらく $scope シャドーイングを試していることになります。

FirstCtrl 内およびデータを更新するときに「コンテンツ」オブジェクトを作成してみてください。コンテンツ オブジェクトを再作成しないでください (つまり、しないでください >> $scope.contents = {};) データ オブジェクト/配列を更新するだけです >>$scope.content.data = ...

これで問題が解決しない場合は、問題に有効なフィドルを提供してください。これを出発点として使用できますhttp://jsfiddle.net/IgorMinar/ADukg/

于 2013-07-22T14:30:58.313 に答える