2016-04-27 23 views
0

データを変更する方法はわかりましたが、私の角型アプリケーションに同じコントローラを使用してください。基本的には、これらのアクティビティの1つをクリックすると、アクティビティ(レストラン、公園など)のリストが表示されます。ビューには、すべてのレストランと同じものが公園に表示されます。私はそれを行う方法を知っていますが、私はpark_ctrlとrestaurant_ctrlを作成する必要があります。データはまったく同じ方法でフォーマットされるためです。私はちょうど1つのコントローラしか使用できないのか知りたかったので、それらのボタンをクリックすると受信したデータを変更するだけでした。同じコントローラを使用してデータを切り替えるAngularJS

私の質問が意味をなさないことを願っています。データを取得周り

+0

はい、できます。それをやってみて、具体的な問題がある場合はここに戻ってください。 –

答えて

0

ロジックは、サービスの責任でなければなりませんので、私はあなただけで私はそれが本当に良いアイデアではないと思うが、意見同じコントローラから、

0

を別の例では、異なるサービスを呼びたいと思いますベース。

あなたは機能することができます:私はここでの問題は、「可能な角度の例のほとんどはであることだと思います

<button ng-click="changePage('parks')">Parks</button> 
<button ng-click="changePage('restaurants')">Restaurants</button> 

<div ng-if="type==='park'"> 
    {{parks}} 
</div> 


<div ng-if="type==='restaurants'"> 
    {{restaurants}} 
</div> 
0

:と

function($scope){ 

    $scope.changePage = function (type) { 
    if(type==="park"){ 
     $scope.parks = asynLoadFunctionToGetParks(); 
    }else{ 
     if(type === "restaurants"){ 
     /* same as below */ 
     } 
    } 
    }; 

} 

そして、あなたのビュータイプを変更しますこんにちは世界 "のバラエティで、コントローラから直接データを取得することを示しています。問題は、すぐに使えるAngularJSは実際にはビジネスロジックレイヤー自体を持たないということです。このようなレイヤーを追加したほとんどの人は、あまりにも忙しすぎて例を挙げることはできないと思います。

私はこれを行う方法は、あなたのニーズに応じて、ユーザーがアプリをナビゲートするときに、ランブロックの前で、または遅れて、さまざまなデータタイプのすべてを取得できる「マスター」サービスを作成することです。次に、ルート解決(解決プロパティ)の該当するサブコレクションへの参照、またはディレクティブの場合の分離スコープを指定します。

コントローラは、masterService.getCollection($scope.collectionName)などを呼び出すことでデータを要求できますが、その場合は、masterServiceにまだその特定のコレクションがない可能性があるという問題が発生し、コントローラを混乱させる必要がありますあたかもそれを処理するコントローラの責任であるかのように、すべての約束の解決策を取り入れています。

ビューでmasterService.collections[$scope.collectionName]にバインドすると、コントローラは$ scopeまたはcontrollerAs変数のコレクションのみを公開し、masterServiceは引き続きデータを取得して使用可能にすることができます。

0

はいできます。範囲内で異なるサービスと共通変数を使用するだけです。

if (something) { 
    $scope.data = restaurantsService.get(); 
} else { 
    $scope.data = parksService.get(); 
} 
関連する問題