将数据从DOM传递到AngularJS

将数据从DOM传递到AngularJS,angularjs,ngroute,Angularjs,Ngroute,我有一个PHP驱动的特定变量,我需要使用它作为动态生成的页面标题的一部分。页面由AngularJS发送,AngularJS也在处理标题。输出变量的DOM部分如下所示: INDEX.HTML <!DOCTYPE html> <html lang="en" ng-app="asApp"> <head> <title ng-bind="title">PeppyBurro – Radical Spanish learning tips a

我有一个PHP驱动的特定变量,我需要使用它作为动态生成的页面标题的一部分。页面由AngularJS发送,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>
为了简洁起见,这些代码段中的每一个都经过了高度删节,但是您可以看到所有受影响的区域以及我正在实现的逻辑流程。如您所见,我正在使用URL的slug(通过
:lev2
)生成标题,该标题给出了作者的ID而不是实际姓名。PHP变量(
$author
)包含对应ID的真实名称。我的问题是,如何将此变量的值传递给AngularJS
blogController
部分,以便将其包含在动态生成的页面标题中,而不是URL slug中

我尝试使用
ng模型

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

这运行没有任何错误;然而,它将我的标题改为“未定义的帖子”。有人能提出一个解决方案吗?

在路由器中使用
resolve
进行api调用以获取作者数据。您将通过尝试使用php动态呈现代码片段来对抗此应用程序……就像其他人一样严格使用数据API。这是为数不多的使用
ng init
的地方之一。然而,如果不谨慎使用,将angular和php代码混合在一起会很快变得混乱。顺便说一句,您提出的解决方案将不起作用,因为
ng model
仅在
input
元素上可用,您不能将
ng model
用于
span
div
,因为它们在渲染后无法更改模型值。
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; }
   });
}]);
<?php echo '<span class="someclass" ng-model="authorname">' . $author . '</span>'; ?>
$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; }
   });