2012-09-01 12 views
6

के बाहर ngSwitch में वर्तमान मार्ग का उपयोग कर सकता हूं, मैं वर्तमान दृश्य के आधार पर पृष्ठ शीर्षलेख बदलने की कोशिश कर रहा हूं। हेडर ngView के बाहर है। क्या यह संभव है या क्या मुझे हेडर को देखने के अंदर रखना होगा?AngularJS में, क्या मैं ngView

मेरे कोड इस जैसा दिखता है:

<div id="header"> 
    <div ng-switch on="pagename"> 
     <div ng-switch-when="home">Welcome!</div> 
     <div ng-switch-when="product-list">Our products</div> 
     <div ng-switch-when="contact">Contact us</div> 
    </div> 
    (a lot of unrelated code goes here)  
</div> 

<div id="content> 
    <div ng-view></div> 
</div> 

उत्तर

1

लगता है के रूप में यह शीर्षक और सामग्री के लिए विभिन्न नियंत्रकों किया जाएगा। नियंत्रकों के बीच संचार के लिए सबसे अच्छा तरीका सेवा है। एक और तरीका - घटनाओं। See Vojta answer

9

आप $location सेवा इंजेक्ट कर सकते हैं और $location.path() पर जांच कर सकते हैं। http://docs.angularjs.org/api/ng.$location

जे एस:

function Ctrl($scope, $location) { 
    $scope.pagename = function() { return $location.path(); }; 
}; 

HTML:

<div id="header"> 
    <div ng-switch on="pagename()"> 
    <div ng-switch-when="/home">Welcome!</div> 
    <div ng-switch-when="/product-list">Our products</div> 
    <div ng-switch-when="/contact">Contact us</div> 
    </div> 
</div> 
10

प्रत्येक मार्ग को कोई नाम दें जब आप इसे परिभाषित कर रहे हैं। फिर नियंत्रक में $ रूट इंजेक्ट करें, फिर नियंत्रक इसे वर्तमान दायरे में प्रकाशित करें। इसके बाद आप एनजी-स्विच को $.c.current.name

1

हल करने के लिए एक अच्छा तरीका यह है कि इसे अपने नियंत्रक में $ रूट इंजेक्ट करना है और फिर वर्तमान रूट नाम को पकड़ने के लिए इसका उपयोग करना है।

app.controller('YourController', function($scope, $route){ 
    $scope.pagename = $route.current.$$route.name; 
}); 

और आप की तरह निम्नलिखित अपने मार्गों नाम के लिए है:

app.config(['$routeProvider', 
    function($routeProvider) { 
    $routeProvider. 
     when('/product-list', { 
     templateUrl: 'views/product-list.html', 
     controller: 'ProductsController', 
     name: 'product-list' 
     }). 
     when('/home', { 
     templateUrl: 'views/home.html', 
     controller: 'HomeController', 
     name: 'home' 
     }). 
     otherwise({ 
     redirectTo: '/' 
     }); 
    }]); 

तो जब आप एक मार्ग लोड, नियंत्रक वर्तमान मार्ग नाम पढ़ सकते हैं और यह देखने के लिए पारित अपने पृष्ठ का नाम दिखना चर में होगा । फिर दृश्य इसे उठाएगा और आपको आवश्यकतानुसार सही दृश्य प्रदर्शित करेगा।

उम्मीद है कि यह मदद करता है :)