Phalcon 和 Angular JS 路由 - 使用 Angular 模板和 Phalcon 控制器

Phalcon and Angular JS routing - use Angular templates and Phalcon controllers

本文关键字:Phalcon Angular 控制器 路由 JS 使用      更新时间:2023-09-26

我正在使用带有Angular JS的Phalcon,并且遇到了问题,Phalcon正在捕获我所有的Angular路由。目标是首先调用路由/dashboard,加载Angular,jQuery等。如果用户单击链接/people,则只有 ng-view 应该更改,并且应该加载 Angular 模板。

伏特模板:

<div ng-app="sampleApp">
    // Loads menu with two links to /dashboard and /people
    <?php $this->partial("partials/navigation") ?>
    <?php echo $this->flashSession->output(); ?>
    <div ng-view ng-controller="DashboardController">
    {{ content() }}
    </div>
</div>

我的目标是当用户单击链接时,仅使用Angular中定义的路由更改ng视图:

$routeProvider
        .when('/dashboard', {
            templateUrl: '/partials/dashboard.html',
            controller: 'DashboardController'
        }).when('/people', {
            templateUrl: '/partials/people.html',
            controller: 'PeopleController'
        });

取而代之的是,Phalcon路由尝试使用"indexAction"方法加载"PeopleController"。

我尝试禁用 Phalcon 路由并仅加载仪表板路由(加载 Angular 库的位置):

$di->set('router', function () {
    $router = new 'Phalcon'Mvc'Router(false);
    $router->add("/dashboard", array(
        'controller' => 'dashboard',
        'action' => 'index'
    ));
    return $router;
});

如何使用 Phalcon 加载某些页面/路由(如/dashboard)和一些页面/路由以更改 Angular 中的 ng-view?

此致敬意帕特里克

编辑:它适用于普通的Angular,但是使用激活的HTML模式会产生问题

构造将false作为参数传递的路由器足以不添加默认路由。只有您明确添加的那些才会匹配。

但是,您的问题更有可能来自客户端路由器。请仔细阅读有关$location服务的信息,以了解如何使angular能够判断是否应该从服务器中检索当前路由。

如果您提供有关角度路由器设置的更多详细信息,我想改进此答案。