2013-01-01 12 views
6

まず、幸せな新年。
しかし、仕事は続かなければなりません! ;)AngularJS - IDでデータを取得

私は次のような状況に陥っています。
カスタムマーカーが静的な(Google以外の)マップになっています。このコントローラ/経路で

<div class="alldealermodal" ng-controller="DealerDetailsCtrl">  
    <div ng-view></div> 
    </div> 

:私は正常にIDを表示する "ディーラーdetails.html" に

<div ng-controller="DealerDetailsListCtrl"> 
    <a ng-click="showdetails=!showdetails" href="#/dealer/{{marker.id}}" class="marker" style="left:{{marker.left}};top:{{marker.top}}" ng-repeat="marker in dealer|zipFilter:zipCodeLookup:countryLookup"></a> 
</div> 

Iのルートを:私はこのコードでマーカーを表示(およびフィルタ) :

app.config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
     when('/dealer/:id', {templateUrl: 'files/tpl/dealer-details.html', controller: DealerDetailsCtrl}). 
     otherwise({redirectTo: '/'}); 
}]); 

function DealerDetailsCtrl($scope, $routeParams) { 
    $scope.id = $routeParams.id; 
} 

私はangularJSの新機能を知りたいので、どうすればIDですべてのデータを取得できますか?

私のJSONファイルは、次のようになります

[ 
{ 
    "id": "2", 

    "name": "Laden Dortmund", 
    "strasse": "Unionstr.", 
    "hausnr": 1, 
    "plz": "45525", 
    "stadt": "Dortmund", 
    "land": "DE", 
    "url": "http://www.google.de", 
    "tel": "0234-234568", 
    "email": "[email protected]", 
    "left": "200px", 
    "top": "300px", 
    "lowRange":60000, 
    "highRange":70000 
}, 
{ 
    "id": "1", 
    "name": "Laden Unna", 
    "strasse": "Berlinerstr.", 
    "hausnr": 134, 
    "plz": "78654", 
    "stadt": "Unna", 
    "land": "AT", 
    "url": "http://www.bing.de", 
    "tel": "0234-11223344", 
    "email": "[email protected]", 
    "left": "250px", 
    "top": "500px", 
    "lowRange":40000, 
    "highRange":50000 
} 
] 

など....と私は、選択されたIDからすべてのデータを取得したいと思います。どうやってやるの?誰かにヒントを与えるだろうか?

私は、JSONからすべてのデータ取得するには、このコントローラーを使用します。

function DealerListCtrl($scope, $http) { 
    $scope.dealer = []; 
    $http.get('files/js/dealer.json').success(function(data) { 
    $scope.dealerall = data; 
    }); 
    $scope.orderProp = 'id'; 
} 

はどうもありがとうございました!

+0

関数内の配列を繰り返し処理し、オブジェクトを正しいidで返しますか? –

答えて

4

まずng-controller="DealerDetailsCtrl"dealer-details.htmlに設定する必要はありません。ng-viewがそれを処理するためです。

第二に、あなたはあなたのデータを取得するためにserviceを提供する必要があります:あなたがディーラーにアクセスする必要があなたのコントローラでは、

var app = angular.module('myApp', []); 

app.factory('dealerService', function($http) { 
    return { 
     getDealerList function() { 
     var dealers = { 
      list : [] 
     }; 
     // TODO add possible caching via $cacheFactory 
     $http.get('files/js/dealer.json').success(function(data) { 
      dealers.list = data; 
     }); 
     return dealers; 
     }, 

     // other functions 
    }; 

}); 

、あなたは他のサービスと同じように、単に、DealerServiceを注入します。特定のエントリをフェッチするには、繰り返し実行します。

もう1つの可能性は、$routeProviderresolveプロパティを使用してディーラーのデータをDetailControllerに送信することです。

+0

それは動作しません、私は何か間違っていますか?エラーを取得する:ncaught SyntaxError:予期しないトークン関数行5 – Marek123

+0

これは動作しますが、a:がありませんでした。ありがとう! – Marek123

+0

別の問題があります(申し訳ありませんが、非常に新しいanglejs)...これは正しいですか? http://pastebin.com/gTHs0vNy - このエラーが表示されます。ReferenceError:ディーラーが定義されていません – Marek123

関連する問題