繁体   English   中英

Angularjs 1.5 ng-controller上的 <head> 标签

[英]Angularjs 1.5 ng-controller on the <head> tag

我正在使用Angularjs 1.5。

创建了一个服务来处理META数据和页面标题。 尝试应用它。

问题是-由于某种原因,如果我直接在<head>标记上定义控制器:

<head ng-controller="headMetaController">

控制器将不会被加载,但是如果我将其与<head>包装在其他<div> <head>

<head>
<div ng-controller="headMetaController">
    <title ng-bind="seoMetaService.title()"></title>
    <meta name="description" content="{{ seoMetaService.metaDescription() }}">
    <meta name="keywords" content="{{ seoMetaService.metaKeywords() }}">
<div>
</head>

=>它有效。

因此,我想它可能与<head>标签=>有某种联系,不确定,解决它的正确方法是什么? 我还担心将元数据放在附加的<div>可能不是出于SEO目的的好主意?

如果您担心SEO,则必须从另一个角度解决这个问题。

除了<div>不是有效的内部<head>使用内插<meta>值是一个红色信号。 关心这些标签的爬虫将不会看到它们,而是会看到{{ seoMetaService.metaKeywords()}} ,这显然对SEO不利。

解决方案A:在服务器端呈现这些值。

解决方案B:保留现有内容,但指示爬网程序在其他位置访问您的页面。 添加<meta name="fragment" content="!"> ,并允许将渲染页面的快照保存在其他位置,并在将?_escaped_fragment_=添加到URL时提供。 您可以将此部分委托给诸如prerender.io或类似服务之类,以扫描和存储您的页面。

首先,我认为<div><head>标记内不是有效的标记,因为该标记仅用于元数据,脚本,样式和其他不希望显示的内容。

其次,即使您这样调用控制器,也并不意味着您可以访问head标记内的控制器变量。 只有服务/工厂可以调用内部head标签。

因此,与其从head标签调用它, headhtml标签或body标签或body标签内部调用控制器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM