2015-11-04 85 views
1

我試圖讓我的元控制器動態更改元標記,但在控制檯中我得到error ng areq not a function。我通過StackOverflow搜索類似的問題,但沒有解決方案是爲我的問題。我在我的HTML,這些標籤:AngularJS錯誤代碼不是函數

<html ng-app="WebApp" > 
    <head ng-controller="MetaDataCtrl"> 
    <meta name="description" content="{{ meta.tags.description }}"> 
</head> 
<body > 

    <div ng-include='"templates/header.html"'></div> 
    <div ng-view></div> 

</body> 
</html> 

Main.js

var app = angular.module('WebApp', [ 
    'ngRoute' 
]); 

/** 
* Configure the Routes 
*/ 
app.config(['$routeProvider', '$locationProvider', function($routes, $location) { 
$location.html5Mode(true).hashPrefix('!'); 
    $routes 
    // Home 
    .when("/", {templateUrl: "partials/home.html", 
     controller: "PageCtrl", 
     metadata: { 
      title: 'This is my title', 
      description: 'This is Desc.' } 

    }) 
}]); 

app.controller('PageCtrl', function (/* $scope, $location, $http */) { 

}); 

.controller('MetadataCtrl', function ($scope, metadataService) { 
    $scope.meta = metadataService; 
}); 
+0

你能把metadataService –

+0

的代碼,我沒有任何代碼它。我在網上編譯了各種教程的代碼。我是否需要代碼,我認爲角處理元數據服務。 – user3187715

+0

你的構建過程是什麼?你是否縮小了你的代碼? – LordTribual

回答

1

有沒有這樣的服務metadataService,你不自己定義它。然而,看起來你只需要accecc當前路線metadata對象。在這種情況下,它很容易做到,因爲它是$route服務的一部分。你也應該建立一個監聽器來更新全局meta對象時路由變化:

app.run(['$rootScope', function($rootScope) { 
    $rootScope.$on('$routeChangeSuccess', function(event, current) { 
     $rootScope.meta = current.metadata; 
    }); 
}]); 

演示:http://plnkr.co/edit/nQfqNWvoYQQElv909uZF?p=preview

+0

是的,但我需要將它們綁定到標題,描述等,並讓谷歌機器人在獲取標籤中看到它們。這就是爲什麼我選擇這種方式來改善搜索引擎優化。 – user3187715

+0

那麼問題是什麼:'$ scope.meta = $ route.current.metadata'。 – dfsq

+0

我寫了它,但它並沒有改變任何東西。我需要額外的東西嗎? – user3187715