将数据从DOM传递到AngularJS

时间:2016-01-31 06:21:18

标签: angularjs ngroute

我有一个PHP驱动的特定变量,我需要将其用作动态生成的页面标题的一部分。该页面由AngularJS路由,该处理标题。输出变量的DOM部分如下所示:

INDEX.HTML

<!DOCTYPE html>
<html lang="en" ng-app="asApp">
   <head>
      <title ng-bind="title">PeppyBurro – Radical Spanish learning tips and tricks for the adventurous learner</title>
   </head>
   <body ng-controller="mainController">
      <div id="main" style="min-height: 50em;">
         <div ng-view></div>
      </div>
   </body>
</html>

blog.php的

<?php echo '<span class="someclass">' . $author . '</span>'; ?>

角度控制器

var asApp = angular.module('asApp', ['ngRoute']);
asApp.config(['$routeProvider', '$httpProvider', '$locationProvider', function($routeProvider, $httpProvider, $locationProvider) {
   $routeProvider
      .when('/blog/author/:lev2', {
            title: 'The PeppyBurro blog',
            templateUrl : 'pages/blog.html',
            controller  : 'blogController'
        })
}]);


asApp.controller('blogController', function($scope, $routeParams){});

asApp.run(['$rootScope', '$route', '$location', function($rootScope, $route, $location) {
   $rootScope.$on('$routeChangeSuccess', function (event, current, previous) {
      if(0 === $location.path().indexOf('/blog/author/')) { document.title = 'Posts by “' + $route.current.params['lev2'] + '” | ' + $route.current.title; }
   });
}]);

为了简洁起见,每个片段都被高度删节,但您可以看到所有受影响的区域以及我正在实施的逻辑流程。如您所见,我正在使用URL的slug(通过:lev2)来生成标题,该标题提供作者的ID而不是实际名称。 PHP变量($author)包含相应ID的真实名称。我的问题是,如何将此变量的值传递给AngularJS blogController部分,以便它可以包含在动态生成的页面标题中而不是URL slug中?

我尝试使用ng-model

<?php echo '<span class="someclass" ng-model="authorname">' . $author . '</span>'; ?>

然后我在控制器中将lev2替换为authorname,如下所示:

$rootScope.$on('$routeChangeSuccess', function (event, current, previous) {
      if(0 === $location.path().indexOf('/blog/author/')) { document.title = 'Posts by “' + $route.current.params['authorname'] + '” | ' + $route.current.title; }
   });

这没有任何错误;然而,它使我的标题成为&#34; 帖子由undefined &#34;代替。有人可以建议修复吗?

0 个答案:

没有答案