2012-12-26 8 views

उत्तर

42

सुंदर ज्यादा अपने क्लाइंट साइड जावास्क्रिप्ट कोड में कहीं भी:

UI.registerHelper "setTitle", -> 
    title = "" 
    for i in [0..arguments.length-2] 
    title += arguments[i] 
    document.title = title 
    undefined 

या जे एस में एक ही:

document.title = "My new title"; 
+2

बहुत आसान, धन्यवाद। –

10

आप शीर्षक (CoffeeScript) स्थापित करने के लिए एक सहायक बना सकते हैं

UI.registerHelper("setTitle", function() { 
    var title = ""; 
    for (var i = 0; i < arguments.length - 1; ++i) { 
    title += arguments[i]; 
    } 
    document.title = title; 
}); 

फिर आप जटिल तरीकों से इसका उपयोग कर सकते हैं, और यह प्रतिक्रियाशील होगा:

{{#if book}} 
    {{setTitle book.title}} 
{{else}} 
    {{setTitle "My books"}} 
{{/if}} 
37

आप डेविड Wihl के समाधान का विस्तार कर सकते हैं:

Deps.autorun(function(){ 
    document.title = Session.get("DocumentTitle"); 
}); 

तो आप किसी भी समय कॉल में कर सकते हैं:

Session.set("DocumentTitle","New Document Title"); 
+0

इस उत्तर को प्यार करो! –

+0

जैसा कि यहां बताया गया है https://github.com/oortcloud/unofficial-meteor-faq#how-do-i-get-reactive-html-in-the-head-tag – jefeman

7

मुझे लगता है इसे और अधिक रूटर में सीधे बात उस तरह संभाल के लिए सुविधाजनक onBeforeAction:

Router.map(function() { 
    return this.route('StudioRoot', { 
    path: '/', 
    onBeforeAction: function() { 
     return document.title = "My Awesome Meteor Application"; 
    } 
    }); 
}); 
4

आप भी कर सकते हैं <head> </head> टैग्स में शामिल करें जो टेम्पलेट में नहीं रहते हैं। इस प्रयास करें:

sample.html की सामग्री:

<head> 
    <title>my title</title> 
</head> 

<body> 
    ... 
</body> 

<template name="mytemplate"> 
    ... 
</template> 
12

तो आप का उपयोग iron:router आप मेटा टैग के साथ शीर्षक को संभालने के लिए पैकेज manuelschoebel:ms-seo जोड़ सकते हैं।

Router.map(function() { 
    return this.route('blogPost', { 
    path: '/blog/:slug', 

    onAfterAction: function() { 
     var post = this.data().post; 
     SEO.set({ 
     title: post.title, 
     meta: { 
      'description': post.description 
     }, 
     og: { 
      'title': post.title, 
      'description': post.description 
     } 
     }); 
    } 
    }); 
}); 
1

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

Meteor.isClient में

:

Meteor.startup(function() { 
    Deps.autorun(function() { 
     document.title = Session.get('documentTitle'); 
    }); 
}); 
अब कि वर प्रतिक्रिया के रूप में सेट कर दिया जाता

, में जाना यह स्थिर और गतिशील एसईओ डेटा के लिए उपयोगी है रूटर फ़ाइल (नहीं करता है, तो पहले से ही किया: उल्का जोड़ने लोहा: रूटर मेरे रूटर फ़ाइल दोनों क्लाइंट और सर्वर है।)

Router.route('/', { 
    name: 'nameOfYourTemplate', 
    onBeforeAction: function() { 
     Session.set('documentTitle', 'whateverTitleIWant'); 
     this.next(); //Otherwise I would get no template displayed 
    } 
}); 

यह कोई फर्क नहीं पड़ता कि आप पहले से ही हेड टैग में एक शीर्षक निर्धारित करते हैं। इसे आपके मार्ग के अनुसार बदल दिया जाएगा।

+0

कुछ से कोई फर्क नहीं पड़ता, लेकिन सत्र चर पेज रीफ्रेश नहीं टिकेगा। –

+0

@ डरहम, एक ताज़ा करने पर मार्ग फिर से चलाया जाएगा। – BudgieInWA

-1

मुझे एक ऐसा उत्तर देखना पड़ा जो यूई-राउटर के लिए काम करेगा। मुझे पता है कि यह वह जवाब नहीं हो सकता जिसे आप ढूंढ रहे थे। के बाद से इस सवाल के बारे 2 साल पहले पोस्ट किया गया था, मैं अगर किसी ui रूटर के साथ एक समाधान की तलाश में यहां आने के लिए था, इस सवाल का जवाब उन्हें मदद कर सकता है सोचा:

myApp.run.js

(function() { 
    'use strict'; 

    angular 
    .module('myApp') 
    .run(run); 

    run.$inject = ['$rootScope', '$state']; 

    function run($rootScope, $state) { 
    $rootScope.$on("$stateChangeSuccess", function(previousRoute, currentRoute){ 
     document.title = 'myApp - ' + currentRoute.data.pageTitle; 
    }); 
    }; 

})(); 

मार्ग।जेएस

(function() { 
    'use strict'; 

    angular 
     .module('myApp') 
     .config(config); 

    config.$inject = 
     ['$urlRouterProvider', '$stateProvider', '$locationProvider']; 

    function config($urlRouterProvider, $stateProvider) { 

     // ... 
     $stateProvider 
      .state('home', { 
      url: '/', 
      templateUrl: 'client/home/views/home.ng.html', 
      controller: 'HomeController', 
      data: { 
       pageTitle: 'My Dynamic title' 
      } 
      }) 
    } 
})(); 
+0

यह क्यों कम किया गया था? –

+0

क्योंकि आपने एक metular.js- संबंधित प्रश्न धागे में Angular.js उदाहरण पोस्ट किया है। –