【问题标题】:Angular + Laravel : loading view via ngRouteAngular + Laravel:通过 ngRoute 加载视图
【发布时间】:2015-02-23 08:05:09
【问题描述】:

我在结合 Laravel 和 Angular 时遇到了这个问题:

按照我在网上找到的一个非常简单的tutorial,我尝试使用ng-view 指令加载视图。但是,我无法真正加载模板。这是我的app.js 代码:

(function() {

    var app = angular.module('profuApp', ['ngRoute']);

    app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
        $routeProvider
            .when('/inicio', {
                templateUrl: '../templates/inicio.html',
                controller: 'homeCtrl'
            })
            .otherwise({ redirectTo: '/' });
    }]);

    app.controller('homeCtrl', ['$scope', '$http', function($scope, $http) {
        $http.get('http://localhost:8888/profucom/public/getData').success(function(data) {
            $scope.datos = data;
        });
    }])

})();

我的文件树:

app/
bootsrap/
public/
   js/
      angular.min.js
      angular-route.min.js
      app.js
   templates/
      inicio.html
. . .

网站加载正常,但是当我查看源代码时,而不是查看inicio.html 中的模板,就会发生这种情况...

在我的 index.blade.php 文件中的代码

<div ng-view></div>

我在浏览器源代码中看到的代码

<!-- ng-view: -->

Chrome 上的 network 标签在尝试加载视图时未显示 404 错误。

到目前为止我已经尝试过:

  1. 将模板放在js 文件夹中(templateUrl:'templates/inicio.html')
  2. 将模板放在public 文件夹中(templateUrl:'../templates/inicio.html')
    • 还有,templateUrl: '/public/templates/inicio.html'
  3. 将模板放在根文件夹中(templateUrl:'/templates/inicio.html')
  4. 仅将文件放在js 文件夹中:(templateUrl: 'inicio.html')

上述方法似乎都不起作用。请帮忙?

编辑我也在 url 中看到了这种情况:而不是 myapp/public/inicio 它加载像 myapp/public/inicio#/

【问题讨论】:

  • 我相信这是因为您的基本 href 已关闭。转到您的网络选项卡,它试图包含的路径是什么?
  • 就是这样,它甚至没有调用它。没有 404 错误,因为没有调用它。我编辑了他的问题以报告另一个未知行为。

标签: javascript php angularjs laravel ng-view


【解决方案1】:

再一次,这不过是人为的错误。对于那些花时间试图回答和理解我的问题的人,我感到抱歉和感谢。这是解决方案:

我直接使用来自 CDN 的最新稳定版本,版本 1.3.5;但是 - 只是想看看会发生什么 - 我更改为 1.2.28 版本。 有什么区别?有点语法。

而不是我上面所做的......

app.controller('homeCtrl', ['$scope', '$http', function($scope, $http) {
. . .

我这样做了:

app.controller('homeCtrl', function($scope, $http) { 
. . .

从一个版本更改为另一个版本就是答案,稍微改变一下语法。

我希望这可以帮助像我一样分心的人。

【讨论】:

    【解决方案2】:

    您的 index.blade.php 位于何处? templateUrl 应该是从加载 app.js 代码的任何文件到模板的路径(我假设是 index.blade.php)。所以如果它在根目录中,templateUrl: '/public/templates/inicio.html'

    至于# 的问题,请阅读this somewhat related question

    【讨论】:

    • 我的 index.blade.php 在文件夹 app/views/ 中。我尝试了您提供的相同路线,但问题仍然存在。
    • 你在哪个 URL 上测试这个? localhost/8888/inicio 还是 localhost/8888/#/inicio ?您在这个应用程序中有多个角度模块吗?我对myapp/public/iniciomyapp/public/inicio#/ 的差异感到有些困惑——该网址究竟来自/位于哪里?
    • 我在 localhost:8888/myapp/public/inicio 上进行测试。只有一个模块,app.js 上的那个
    • 嗯,可能是您服务器上的某个地方提供了不正确的文件。我不知道您是如何设置的,但是您是否总是指向 index.blade.php 文件,而不管路由如何?当您尝试 localhost:8888/#/myapp/public/inicio 时会发生什么?有关详细信息,请参阅this question
    猜你喜欢
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 1970-01-01
    相关资源
    最近更新 更多