क्या एक उल्का ऐप में <title>
तत्व बदलने का कोई तरीका है? लगता है टेम्पलेट्स केवल <body>
में संसाधित किए जाते हैं।उल्का - दस्तावेज़ शीर्षक सेट करना
उत्तर
सुंदर ज्यादा अपने क्लाइंट साइड जावास्क्रिप्ट कोड में कहीं भी:
UI.registerHelper "setTitle", ->
title = ""
for i in [0..arguments.length-2]
title += arguments[i]
document.title = title
undefined
या जे एस में एक ही:
document.title = "My new title";
आप शीर्षक (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}}
आप डेविड Wihl के समाधान का विस्तार कर सकते हैं:
Deps.autorun(function(){
document.title = Session.get("DocumentTitle");
});
तो आप किसी भी समय कॉल में कर सकते हैं:
Session.set("DocumentTitle","New Document Title");
इस उत्तर को प्यार करो! –
जैसा कि यहां बताया गया है https://github.com/oortcloud/unofficial-meteor-faq#how-do-i-get-reactive-html-in-the-head-tag – jefeman
मुझे लगता है इसे और अधिक रूटर में सीधे बात उस तरह संभाल के लिए सुविधाजनक onBeforeAction
:
Router.map(function() {
return this.route('StudioRoot', {
path: '/',
onBeforeAction: function() {
return document.title = "My Awesome Meteor Application";
}
});
});
आप भी कर सकते हैं <head> </head>
टैग्स में शामिल करें जो टेम्पलेट में नहीं रहते हैं। इस प्रयास करें:
sample.html की सामग्री:
<head>
<title>my title</title>
</head>
<body>
...
</body>
<template name="mytemplate">
...
</template>
तो आप का उपयोग 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
}
});
}
});
});
क्या मैं कर रहा समाप्त हो गया:
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
}
});
यह कोई फर्क नहीं पड़ता कि आप पहले से ही हेड टैग में एक शीर्षक निर्धारित करते हैं। इसे आपके मार्ग के अनुसार बदल दिया जाएगा।
कुछ से कोई फर्क नहीं पड़ता, लेकिन सत्र चर पेज रीफ्रेश नहीं टिकेगा। –
@ डरहम, एक ताज़ा करने पर मार्ग फिर से चलाया जाएगा। – BudgieInWA
मुझे एक ऐसा उत्तर देखना पड़ा जो यूई-राउटर के लिए काम करेगा। मुझे पता है कि यह वह जवाब नहीं हो सकता जिसे आप ढूंढ रहे थे। के बाद से इस सवाल के बारे 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'
}
})
}
})();
यह क्यों कम किया गया था? –
क्योंकि आपने एक metular.js- संबंधित प्रश्न धागे में Angular.js उदाहरण पोस्ट किया है। –
बहुत आसान, धन्यवाद। –