2013-01-01 40 views
6

द्वारा सभी को नया, नया साल मुबारक हो।
लेकिन काम चलना चाहिए! ;)AngularJS - आईडी

मुझे निम्न स्थिति मिली:
मुझे कुछ कस्टम मार्कर एक स्थिर (गैर google) मानचित्र मिला है। मैं प्रदर्शित (और फिल्टर) इस कोड के साथ मार्कर: इस नियंत्रक/रूटिंग के साथ

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

:

<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" जहाँ मैं सफलतापूर्वक आईडी प्रदर्शित करने के लिए मार्ग :

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

चूंकि मैं कोणीय जेएस के लिए बहुत नया हूं, मैं जानना चाहता हूं, मैं आईडी द्वारा सभी डेटा कैसे प्राप्त कर सकता हूं।

मेरे 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 
} 
] 

और इतने पर .... और मैं चुना आईडी से सभी डेटा प्राप्त करना चाहते हैं। मैं उसे कैसे कर सकता हूँ? क्या कोई मुझे एक इशारा देगा?

मैं json से सभी डेटा प्राप्त करने के लिए इस नियंत्रक का उपयोग करें:

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

आपको बहुत बहुत धन्यवाद!

+0

बस फ़ंक्शन में सरणी पर फिर से चालू करें और ऑब्जेक्ट को सही आईडी से वापस करें? –

उत्तर

4

सबसे पहले, आप क्योंकि ng-view कि का ख्याल रखना होगा, dealer-details.html में ng-controller="DealerDetailsCtrl" निर्धारित करने की आवश्यकता नहीं है।

दूसरे, आप एक 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 पर संपत्ति का उपयोग करती है।

+0

यह काम नहीं करता है, क्या मैं कुछ गलत कर रहा हूं? त्रुटि प्राप्त करना: ncaught सिंटेक्स त्रुटि: अप्रत्याशित टोकन फ़ंक्शन लाइन 5 – Marek123

+0

यह काम करता है, ए: गायब था। धन्यवाद! – Marek123

+0

एक और समस्या मिली (क्षमा करें, angularjs के लिए बहुत नया) ... क्या यह सही है? http://pastebin.com/gTHs0vNy - यह मुझे यह त्रुटि देता है: संदर्भ त्रुटि: डीलरों को परिभाषित नहीं किया गया है – Marek123