1

私はこの問題に何度も遭遇し始めています。シナリオは、再利用したい部分があるということです。問題は、新しいデータがパーシャルに表示されるようにするには、スコープ内の以前のデータを上書きする必要があることです。人々がこれをどのように回避するかを知りたいです。

次に例を示します。

すべて$scope.pebbles同じパーシャルを使用および共有するタブがあります。タブごとに、異なるデータを入力したいと思います。当然のことながら、データの新しいリクエストを作成し、それを変数に格納してデータを変更します。たとえば、$scope.pebbles = getPebbles(color). これの問題は、タブを変更するたびに新しいリクエストを作成する必要があることです。巨大なパーシャルを持たずにこれを回避するより良い方法はありますか?

概要.html:

<tab>
    <tab-heading>
        <i class="icon-bell"></i> All
    </tab-heading>
    <div class="tab-content">
        <div ng-include="'views/partials/_pebbles.html'"></div>
    </div>
</tab>
<tab ng-repeat="color in colors">
    <tab-heading ng-click="tab(color)">
        {{color}} 
    </tab-heading>
    <div class="tab-content"> 
        <div ng-include="'views/partials/_pebbles.html'"></div>
    </div>
</tab>

_pebbles.html:

 <table class="table table-striped table-bordered bootstrap-datatable datatable">
    <thead>
        <tr>
            <th>Pebble Name</th>
            <th>Pebble Type</th>
        </tr>
    </thead>   
    <tbody>
        <tr ng-repeat="pebble in pebbles">
            <td>{{pebble.name}}</td>
            <td>{{pebble.type}}</td>
        </tr>
    </tbody>
</table>

コントローラ:

$scope.colors = ['blue','red','orange','purple']
$scope.pebbles = getPebbles() // http factory, makes a request for data

$scope.tab = function (color) {
    $scope.pebbles = getPebbles(color)
}
4

4 に答える 4

2

角度のある世界では、コントローラー/ビュー間でデータを共有する方法は、サービスを使用することです。それらはコントローラー間で持続します。

素敵な回答を書こうと思っていましたが、この質問に対する回答はすでに完成していると思います。

データを他の ng-view に渡し、コントローラー間で永続化するためのより良い設計

于 2013-07-29T02:16:26.690 に答える