2016-11-15 5 views
2

角度v1.3.15を使用しています。 私のコントローラは、オブジェクトの配列から大きなテーブルが表示されます。AngularJS:コントローラは、アイテムごとまたはコントローラごとに大きな配列を保持する必要があります

$scope.table = [ 
    { name: "A", 
    availableConnection: [ 
     { id: 1, displayName: "Foo" }, 
     { id: 2, displayName: "Bar" }, 
     ... 
    ]}, 
    { name: "B", 
     availableConnection: [ 
      { id: 1, displayName: "Doo" }, 
      { id: 2, displayName: "Boo" }, 
      ... 
     ]}, 
    ... 
]; 

私のコントローラは、配列$ scope.tableに各セルのコントローラを保持することに優れている場合、私は思っていました。

<tr ng-repeat="x in table" ng-controller="RowController"> 
     <td> 
      <select ng-options="a.displayName for a in availableConnection" >       
      </select> 
     </td> 
</tr> 

プライベートネットワーク内にあるため、私のコードはコピーできません。 この例は、私が何を意味していたかを説明しています。 *また、ページ全体にコントローラが付いているので、穴のテーブルがコントローラの内側にあることを意味します。

答えて

1

が、this tutorial states。あなたのモデル/データは、通常、サービスに含まれるべきです。

Angularアプリケーションを開発するときは、まずモデルについて考えてみてください。モデルを取得/編集/操作するためにAPIを使用してサービスまたは工場に入れます。次に、あなたのビューを設計することです。各ビューは、モデルの一部のサブセットを投影/使用/操作する必要があります。 モデルの必要なサブセットを単にビューに貼り付けるだけの、各ビューのコントローラを作成します。コントローラを可能な限り薄くしてください。

私の見解では、ではなく、では、ネストされたコントローラを使用する方が良いでしょう。to properly use nested controllers。ネストされたコントローラを使用すると、コードが複雑になります。

2

AngularJSのコントローラは、大きなデータセットを含む「重量挙げ」には通常使用されません。 データセットが大きい場合は、値をJSONファイルに保存する必要があります。あなたは、データを取得するために$ HTTPサービスを使用することができます。

$http.get("my_data.json") 
    .then(function(response) { 
     $scope.table = response.data; 
    }); 

あなたはその後、多くのJSONファイルを1つだけコントローラを使用して、あなたのHTMLファイルに印刷することができます。お役に立てれば!そのモデル/スコープにデータを置かない - 範囲は、モデルを参照するモデルすべきではないという審判の判定で、ネストされたコントローラを使用するかどうかを

+0

私はコントローラにデータを保存していません。私はAPIからそれを得る。問題は、テーブル内のすべての行に対してコントローラを作成する必要があるか、ページ全体に対してコントローラを1つだけ作成する必要があるかということでした。 – user3601236

+1

テーブル全体に対して1つのコントローラを使用する必要があります。すべての行にコントローラを使用する場合、ng-repeatは必要ありません。最後にコード内で繰り返されることはありません。私の答えがはっきりしていることを願います:) –

関連する問題