6

次のような状況になりました:
カスタム マーカーを静的 (非 Google) マップに取得しました。次のコードでマーカーを表示 (およびフィルタリング) します。

<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>  

ID を正常に表示する「dealer-details.html」にルーティングします。

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

このコントローラー/ルーティングで:

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": "lade@indortmund.de",
    "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": "lade@inunna.de",
    "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';
}
4

1 に答える 1

5

まず第一に、あなたはそれを世話するので、あなたはで設定ng-controller="DealerDetailsCtrl"する必要はありません。dealer-details.htmlng-view

次に、データを取得するためのサービスを提供する必要があります。

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に送信することです。

于 2013-01-01T15:00:20.200 に答える