2015-09-26 5 views
5

पर एक मान जोड़ना मैं अपने ऑरेलिया एप्लिकेशन के लिए आधार शीर्षक मान सेट करना चाहता हूं और उसके बाद उस रूट के आधार पर एक मान जोड़ना चाहता हूं जो सक्रिय है।Aurelia राउटर config.title

मेरे रूटर विन्यास है:

export class App { 
    configureRouter(config, router) { 
     config.title = 'Brandon Taylor | Web Developer | Graphic Designer'; 
     config.map([ 
      . . . 
      { route: 'work', name: 'work', moduleId: 'work', nav: true, title: ' | work' }, 
      . . . 
     ]); 

     this.router = router; 
    } 
} 

Aurelia config.title की शुरुआत करने के लिए title नेविगेशन पैरामीटर संलग्न करना चाहता है, लेकिन मैं इसे अंत पर चाहते हैं।

मैं दृश्य मॉडल में एक ओवरराइड कर की कोशिश की है:

export class Work { 
    activate(params, routeConfig, navigationInstruction) { 
     routeConfig.navModel.router.title += ' | work'; 
    }; 
} 

लेकिन इस में जो परिणाम: प्रत्येक रूटिंग अनुरोध पर

Brandon Taylor | Web Developer | Graphic Designer | work | work | work ... 

। मैं क्या गलत कर रहा हूं? या मैं शुरुआत के बजाय config.title के अंत पर title विशेषता को कैसे जोड़ सकता हूं?

+0

बेहतर सवाल क्यों तीन बार बुलाया जा रहा है सक्रिय किया जाता है। –

+0

@AshleyGrant वहाँ एक और कॉलबैक है जिसका उपयोग करना चाहिए? मैं सिर्फ ऑरेलिया से शुरू कर रहा हूं। धन्यवाद। – Brandon

+0

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

उत्तर

0

सही दिशा @Jeremy Danyow में ओर इशारा करते हुए के लिए धन्यवाद ।

क्या मैं के साथ समाप्त हो गया था:

import {NavigationContext} from 'aurelia-router'; 

NavigationContext.prototype.standardBuildTitle = NavigationContext.prototype.buildTitle; 

function buildTitle(separator=' | ') { 
    var titleValues = this.standardBuildTitle(separator).split(separator), 
     routeTitle = titleValues[0], 
     configTitle = titleValues.slice(1); 
    configTitle.push(routeTitle); 
    return configTitle.join(separator); 
} 

NavigationContext.prototype.buildTitle = buildTitle; 

कारण यह है कि दिए गए:

config.title = 'Brandon Taylor | Web Developer | Graphic Designer' 

और बुला:

return standardTitle.split(separator).reverse().join(separator); 

परिणामों में:

Graphic Designer | Web Developer | Brandon Taylor | about 

के बजाय:

Brandon Taylor | Web Developer | Graphic Designer | about 
0

मुझे पता है कि उपरोक्त कोड एक गंदे ~ कामकाज है, लेकिन शायद आप तब तक आपकी मदद कर सकते हैं जब तक आप ऑरेलिया समर्थन से जो चाहते हैं उसे पाने के लिए एक सुंदर तरीका न हो।

तुम क्या नहीं कर सका:

export class App { 
    configureRouter(config, router) { 
     const title = 'Brandon Taylor | Web Developer | Graphic Designer'; 
     config.title = ''; 
     var configMap = [ 
      . . . 
      { route: 'work', name: 'work', moduleId: 'work', nav: true, title: ' | work' }, 
      . . . 
     ]; 
     configMap.forEach(item => item.title = title + item.title); 

     config.map(configMap);  
     this.router = router; 
    } 
} 
+1

चालाक :) यह स्थैतिक खिताब के लिए बहुत अच्छा काम करता है, लेकिन विचारों में गतिशील मानों के साथ नहीं। – Brandon

5

औरेलिया के मानक शीर्षक तर्क बाहरी मार्ग/रूटर के शीर्षक के लिए रास्ते में शीर्षक पहले जोड़ता। उदाहरण के लिए, कंकाल-नेविगेशन ऐप में, एप्लिकेशन राउटर का शीर्षक ऑरेलिया है। जिथब उपयोगकर्ता मार्ग का शीर्षक Github Users | Aurelia उत्पादक राउटर शीर्षक पर प्रीपेड किया गया है। यदि आप बच्चे राउटर पेज पर नेविगेट करना चाहते थे, तो शीर्षक Welcome | Child Router | Aurelia पर अपडेट होता है। title

यदि मैं सही तरीके से प्रश्न समझता हूं, तो आप इस तर्क को उलट देंगे। इस उदाहरण में वांछित परिणाम Aurelia | Child Router | Welcome होगा।

शीर्षक निर्माण तर्क NavigationContext कक्षा buildTitle विधि में रहता है।

आप अपने main.js के लिए निम्न जोड़कर इस विधि ओवरराइड कर सकते हैं:

// import the NavigationContext class. It contains the method that 
// builds the title. 
import {NavigationContext} from 'aurelia-router'; 

// rename the standard "buildTitle" method. 
NavigationContext.prototype.standardBuildTitle = NavigationContext.prototype.buildTitle; 

// replace the standard "buildTitle" method with a version that 
// reverses the order of the title parts. 
function buildTitle(separator = ' | ') { 
    let standardTitle = this.standardBuildTitle(separator); 
    return standardTitle.split(separator).reverse().join(separator); 
} 
NavigationContext.prototype.buildTitle = buildTitle; 

अंतिम परिणाम इस प्रकार है: result

+0

बहुत करीब! कॉन्फ़िगरेशन शीर्षक के शब्दों का क्रम उलट दिया जाता है। मेरा जवाब देखें – Brandon

+0

यह अब नेविगेशन इंस्ट्रक्शन में है और विधि _buildTitle है: https://github.com/aurelia/router/blob/master/src/navigation-instruction.js#L226 – hcoverlambda

+0

क्या आप सुनिश्चित हैं कि '_buildTitle' का उद्देश्य जनता के लिए है उपयोग? [एपीआई] (http://aurelia.io/docs.html#/aurelia/router/1.0.0-beta.1.1.3/doc/api/class/NavigationInstruction) इसका उल्लेख नहीं करता है। –