Angularjs + Symfony2路由不能使它工作

时间:2014-07-06 16:31:11

标签: angularjs symfony-2.4

我一直在学习AngularJS,我想将它与我的SF2后端集成。 我对路线感到困惑,让我们看看我有什么:

当我们进入/ usermanager时,symfony路由系统会打开一个加载树枝模板的控制器。在这个模板中,我加载了角所需的所有js组件,并执行此操作:

 {% extends '::base.html.twig' %}

 {% block javascripts %}
    {{ parent() }}

    <script type="text/javascript" src="{{ asset('js/UserManager_Angular.js')}}"></script>
 {% endblock %}


 {% block body %}


<h1>User Manager</h1>

<div data-ng-view></div>
 {% endblock %}

现在这是我的角度代码:

   var UserManager = angular.module('UserManager', ['ngRoute','ngResource']);

UserManager.config(function($routeProvider){
   $routeProvider 
   .when('/addnew',
   {
       controller:'addNewController',
       templateUrl:Routing.generate('_UserManager_add_new_user')
   })
   .when('/',
   {
       controller:'UserManagerHome',
       templateUrl:Routing.generate('_UserManager_getUser_List')
   })

});

UserManager.factory('data_access',['$resource', 
    function($resource){
    return $resource(Routing.generate('_UserManager_getUserList'),{},{
        query:{method:'GET',isArray:true}
    });

}]);

UserManager.controller('UserManagerHome',function ($scope,data_access){
    $scope.users = data_access.query();    
    //$scope.orderProp = 'id';

});

ps:你可以看到我使用FOSBundle进行js路线曝光。我想我得到了如何使用它,因为我的工厂正确地从数据库中获取用户。

所以我想加载一个包含经典角度内容的文件,例如ng-repeat等。这由以下路线表示:

.when('/usermanager',
{
    controller:'UserManagerHome',
    templateUrl:Routing.generate('_UserManager_userList')
})

这是我的路由文件:

_UserManager:
  pattern: /usermanager
  defaults: {_controller: AcmeBundle:UserManager:Home }
  options:
    expose: true

_UserManager_getUser_List:
  pattern: /usermanagerlist
  defaults: {_controller: NRtworksSubscriptionBundle:UserManager:list }
  options:
    expose: true  

_UserManager_getUserList:
  pattern: /usermanager/getuserlist
  defaults: {_controller: AcmeBundle:UserManager:getUserList }
  options:
    expose: true
  requirements:
    _format: json
    _method: GET    


_UserManager_add_new_user:
  pattern: /usermanager/addnew
  defaults : {_controller: AcmeBundle:AddNewUser:Home }
  options:
     expose: true

ps2:控制器几乎是空的,只是呈现我正在寻找的树枝模板。

目前,当我打开/usermanager时,我会看到一个只有标题为“用户管理器”的空白页面。我做错了什么?

1 个答案:

答案 0 :(得分:3)

你的角度路线在哈希之后。这意味着

 www.yoursite.com/usermanager
对于symfony路由器的女巫是/ usermanager,对于你的角度应用程序来说就是      /

如果你访问这个

 www.yoursite.com/usermanager/#/usermanager

然后angulars route将是/ usermanager。

如果说,angular的路由与Symfony的路由系统完全不同,它们不应该有冲突。因为角度路线发生在#。

之后