2012-11-17 23 views
20

मेरे पास एक नियंत्रक है जो एक पृष्ठ नेविगेशन मेनू दिखाता है। मेनू में आइटमों की एक श्रृंखला है, और प्रत्येक आइटम में एक कैप्शन और एक लिंक है। मेरे टेम्पलेट मेंस्थान परिवर्तन का पता लगाने के लिए कैसे करें

module.controller('MenuContr', [ 
    /******/ '$scope', '$location', 
    function ($scope, $location) { 
     $scope.items = [ 
      {text: 'page 0', 
      href: '#/page-0', 
      current: $location.path() === '/page-0'}, 
      {text: 'page 1', 
      href: '#/page-1', 
      current: $location.path() === '/page-1'} 
     ]; 

: मैं भी प्रत्येक आइटम पर एक झंडा इंगित करता है कि चाहे संबंधित पेज वर्तमान में दिखाया गया है सेट

<ul class="menu" ng-controller="MenuContr" ng-cloak> 
    <li ng-repeat="item in items" ng-switch on="item.current"> 
    <span class="current" ng-switch-when="true">{{item.text}}</span> 
    <a ng-switch-default ng-href="{{item.href}}">{{item.text}}</a> 
    </li> 
</ul> 

मैं मेनू जब स्थान परिवर्तन अद्यतन करने के लिए सक्षम होना चाहिए, यह कैसे किया जाता है? क्या कोई ऐसी घटना है जिसके लिए मैं सदस्यता ले सकता हूं?

संपादित करें: इस नियंत्रक को मेरे मार्गों में परिभाषित नियंत्रकों के अतिरिक्त उपयोग किया जाता है, और उपर्युक्त टेम्पलेट ng-view निर्देश युक्त तत्व से ऊपर रखा गया है।

 $scope.$on('$routeChangeSuccess', function() { 
      var items = $scope.items; 
      var path = $location.path(); 

      for (var i = 0; i < items.length; i++) { 
       var item = items[i]; 
       var href = item['href']; 
       item['current'] = !!href && href.substring(1) === path; 
      } 
     }); 

उत्तर

21

में मेरी MenuContr अपने ही सवाल का जवाब करने के लिए? इस तरह आपने AppsModule.config में रूटप्रोवाइडर में परिभाषित किया है? यदि आप अतिरिक्त फ़िल्टरिंग चाहते हैं, तो आप एक ही नियंत्रक को $ रूट पैराम पास कर सकते हैं।

आपने ऑब्जेक्ट को अपने नियंत्रक की शुरुआत में प्रारंभ किया है। तो, एक बार लिंक बदल जाने के बाद, एक ही नियंत्रक को बुलाया जाएगा और आपको किसी अन्य चीज को करने की ज़रूरत नहीं है। चयनित मार्ग के आधार पर, आइटम अपडेट हो जाएंगे।

+1

इसके लिए $ स्कोप और $ रूटस्कोप का उपयोग करने के बीच क्या अंतर है? इस मामले में यह एक निर्देश था जो एप्लिकेशन भर में निकाल दिया गया था, क्या आप $ रूटस्कोप का उपयोग करेंगे? – Winnemucca

0

आप मार्ग परिवर्तन पर एक ही नियंत्रक से आ रहे हैं:

+0

धन्यवाद। मैंने अपना प्रश्न संपादित किया है। नहीं, यह एक नियंत्रक में नहीं है जिसका उपयोग मार्ग में किया जाता है। यह अलग है। – akonsu

संबंधित मुद्दे