मेरे routeProvider:
$routeProvider
.when(
"/film/list",
{
templateUrl: '/film/list.html',
controller: FilmListController,
reloadOnSearch: false
}
....
)
मैं ऐसा किया क्योंकि मैं डॉन क्वेरी स्ट्रिंग में बदलाव के बाद पूरे नियंत्रक को पुनः लोड करना नहीं चाहते हैं, लेकिन मैं अभी भी इसका उपयोग करता हूं और यूआरएल इस तरह दिखता है: film/list?sort=isbn&order=asc&offset=0
। अब जब भी क्वेरी स्ट्रिंग बदलती है मैं अपने नियंत्रक से एक फ़ंक्शन कॉल करना चाहता हूं।
$scope.location = $location;
$scope.$watch('location.search()', function(search) {
$scope.list();
});
लेकिन यह काम नहीं करता: तो मैं एक $ नियंत्रक में घड़ी की स्थापना की कोशिश की। यदि मैं क्वेरी स्ट्रिंग के व्यक्तिगत पैरामीटर के परिवर्तन देखने के लिए $ सेट करता हूं, तो यह काम करता है। लेकिन मैं अपनी क्वेरी स्ट्रिंग के प्रत्येक पैरामीटर के लिए $ घड़ी सेट नहीं करना चाहता हूं। समाधान मैं अब का उपयोग यह है: खोज के लिए देख रहा है के बजाय
$scope.location = $location;
$scope.$watch('location.url()', function(url) {
if($location.path() == '/film/list')
$scope.list();
});
, मैं पूरी url देखें, और फिर मैं जाँच करता है, तो पथ एक मैं routeProviderमें सेट सशर्त समारोह कॉल करने के लिए है । मुझे इस समाधान के बारे में क्या पसंद नहीं है यह है कि मुझे मिलान करने के लिए $ location.path के लिए मूल्य टाइप करना होगा।
किसी को भी एक बेहतर समाधान सुझाव दे सकते हैं, और शायद मुझे इसका कारण बताएं $ देखने होंगे $ location.search() के लिए काम नहीं कर रहा? के बाद से यह और अधिक कुशल है कि उसके बदले $routeUpdate
घटनाओं को सुनने चाहिए,
$scope.$on('$routeUpdate', function(){
$scope.sort = $location.search().sort;
$scope.order = $location.search().order;
$scope.offset = $location.search().offset;
});
फ़ंक्शन में location.search() को लपेटने का प्रयास करें। Http: // stackoverflow देखें।कॉम/प्रश्न/134656 9 0/अधिक जानकारी के लिए बदलते-द-क्लास-इन-एंजुलरजेस-यूजल-डेटा/13468121 # 13468121। –
एक गहरी घड़ी करो। घड़ी के रूप में 3. तर्क के रूप में सच जोड़ें। –
[एंगुलरजेएस सर्च चेंज इवेंट] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/14867772/angularjs-search-change-event) –