2013-01-01 59 views
6

首先,新年快樂。
但工作必須繼續! ;)AngularJS - 通過ID獲取數據

我得到了以下情況:
我得到了一些自定義標記爲靜態(非谷歌)地圖。我顯示(和過濾器),此代碼標記:

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

我它路線「經銷商-details.html」哪裏成功顯示ID:與此控制器/路由

<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": "[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

只需迭代函數中的數組並返回具有正確標識的對象? –

回答

4

首先,您不需要在dealer-details.html中設置ng-controller="DealerDetailsCtrl",因爲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,正如你所其他服務。要獲取特定條目,只需迭代。

另一種可能性是使用$routeProvider上的resolve屬性將代理商數據發送到DetailController。

+0

這不行,我做錯了什麼?獲取錯誤:ncaught SyntaxError:意外的令牌功能行5 – Marek123

+0

它的工作原理,a:丟失。謝謝! – Marek123

+0

有另一個問題(對不起,對於angularjs來說很新)......這是正確的嗎? http://pastebin.com/gTHs0vNy - 它給我這個錯誤:ReferenceError:經銷商未定義 – Marek123