【问题标题】:How to use laravel and angularjs routing together?如何同时使用 laravel 和 angularjs 路由?
【发布时间】:2019-12-24 19:53:24
【问题描述】:

我正在使用 laravel php 框架来执行代码,我希望 angularjs 为我处理路由。我在这里有一个示例:http://embed.plnkr.co/dd8Nk9PDFotCQu4yrnDg/preview,它向我展示了如何使用 angularjs 路由方法在页面之间进行交换,但它们使用简单的 .html 文件来呈现内容。这是我在网上找到的一个样本。

此外,在 laravel 中它有自己的路线。从数据库中获取内容后,如何引导 angularjs 路由器调用 laravel 路由并相应地呈现页面?我是 Angularjs 的新手。谢谢。

【问题讨论】:

  • 您是使用 Laravel 作为 API 提供者(因此通过 REST 请求它)还是希望 Laravel 使用其模板系统呈现您的页面?
  • 你有什么建议。我在这里很困惑。我只想使用 Angular js,这样当您单击任何链接时,它不应该重新加载页面。并在 d ng-view 中渲染内容
  • 你想用 AngularJS 开发你的前端应用程序,我明白了。但是你是如何使用 Laravel 的?将 Angular 放在你的 Laravel 视图中(我希望不是,这是一个非常糟糕的主意)?
  • 是的,我猜。我正在制作一个 master.blade.php 文件,我使用 laravel 路由渲染该文件,并且我正在尝试管理到站点不同部分的路由。事情是当我使用 angularjs 路由时,我看到有一个 templateurl: 通常重定向到 .html 文件的东西。但我希望它呈现一个绝对 URL,该 URL 将是一个 laravel 页面,并在 ng 视图中呈现它。
  • 你不能在 Blade 中使用 AngularJS,它不是为这样使用而设计的。您必须将 Laravel 应用程序与 Angular 应用程序分开,并让它们通过 REST API 进行通信(例如)。

标签: php angularjs


【解决方案1】:

有几种方法可以实现目标,但您不再使用刀片。这里我只是解释最简单的方法。
1.创建一个index.php(不是index.blade.php),在你的routes.php中,你有:

Route::get('/', function()
{
    return View::make('index');
});

它将返回您的索引页面。
在 index.php 中,请包含

    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.8/angular.min.js"></script>
<script src="http://code.angularjs.org/1.2.3/angular-route.js"></script>

或您的本地依赖项。

  1. 在公用文件夹中,您可以创建名为“js”的文件夹,另一个名为“templates”的文件夹。

  2. 在“js”文件中,创建“app.js”、“controller.js”等(不要忘记将它们包含在 index.php 中)

  3. 在“模板”文件夹中,您将创建模板 html。在您给定的示例中,它们是“home.html”、“about.html”、“contact.html”

  4. 在索引页面中,您在此处进行角度路由。
    app.js:

    var app = angular.module('app', [ 'ngRoute' ]);
    app.config(function($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl : 'templates/home.html',
                controller  : 'mainController'
            })
    
            .when('/about', {
                templateUrl : 'templates/about.html',
                controller  : 'aboutController'
            })
    
            .when('/contact', {
                templateUrl : 'templates/contact.html',
                controller  : 'contactController'
            });
    });
    

【讨论】:

  • 所以这意味着,所有请求都将发送到默认前缀页面,然后 Angular 将处理它?因为如果你在另一个常见的 html 页面上使用角度路由器,如果我将角度路由直接传递给搜索浏览器,它会给我一个 404 错误
猜你喜欢
  • 2019-01-21
  • 2018-05-17
  • 2020-05-04
  • 2015-07-08
  • 2014-07-28
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 2013-05-10
相关资源
最近更新 更多