【问题标题】:Angular.js and Express: Routing is not workingAngular.js 和 Express:路由不起作用
【发布时间】:2013-11-20 20:55:11
【问题描述】:

我已经在互联网上搜寻有类似问题的人,但仍然没有解决方案。在将我的应用程序与 Angular-Express-seed、Angular-Express-Master 以及任何其他流行的示例进行比较时,似乎没有任何问题,但它只是不起作用。有人知道为什么会这样吗?

我会尽量省略细节,但不删除可能有问题的代码:

/app.js

// All environments
app.set('views', __dirname + '/views');
app.set('port', process.env.PORT || 3000);
app.engine('.html', require('ejs').renderFile);
app.set('view engine', 'html');
app.set("view options", { layout: false });
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session(
    { secret: 'spunkydelicious',
      cookie : {
        maxAge: (3600000*24*7) // 1 week
      }
    }
));
app.use(passport.initialize());
app.use(passport.session());
app.use(require('express-jquery')('/jquery.js'));
app.use(express.static(path.join(__dirname, '/public')));
app.use(app.router);

...

app.get('/', index.index);
app.get('/partials/:name', index.partials);
app.get('*', index.index);

其中index.index、index.partials等的'index'对应这个:

/app/controllers/index.js

exports.index = function(req, res){
    res.render('index');

};

exports.partials = function(req, res) {
    var name = req.params.name;
    console.log('Hurah!');
    res.render('partials/' + name);
};

/public/javascripts/app.js

'使用严格';

// 声明依赖于过滤器和服务的应用级模块

angular.module('emit', []).
config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
    $routeProvider.when( '/', {
        templateURL:'partials/test',
        controller: AppCtrl
    }).
    otherwise({
      redirectTo: '/'
    });

    $locationProvider.html5Mode(true);
}]);

/public/javascripts/controllers.js

'use strict';

/* Controllers */

function AppCtrl($scope) {
  console.log('123');
}

/views/index.html

<!DOCTYPE html>
<html ng-app="emit">
  <head>
    <base href="/">
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>

    <div ng-view></div>

    <!-- Plugins -->
    <script src="/javascripts/vendor/angular/angular.js"></script>

    <!-- Angular -->
    <script src="/javascripts/app.js"></script>
    <script src="/javascripts/controllers.js"></script>

    <!-- Other scripts -->
  **strong text**  <script src="/javascripts/script.js"></script>
  </body>
</html>

/views/partials/test.html

<div class="">Yay!</div>

请原谅代码的长度,我只是无法破解我做错了什么。客户端控制台的服务器不会记录任何错误。我可以采取任何调试步骤吗?

【问题讨论】:

  • 我认为你的问题是 partials/test.html 的位置。默认情况下,Angular 将在“根”下查找它,在您的情况下,它将在 PUBLIC/partials/test.html 下而不是在 VIEWS/partials/test.html 下
  • 是的,试试 public/views/partials 和 public/views/text.html
  • 是的,我试着玩弄这个,但没有结果。将我的应用程序与 [Angular-Seed] (github.com/btford/angular-express-seed) 进行比较后,它应该可以很好地从服务器加载视图,因为它们使用 Jade 渲染加载它们。但我确实认为你正在做一些事情,因为快速和角度路由系统似乎正在竞争。

标签: node.js angularjs express routing views


【解决方案1】:

经过漫长而令人困惑的调试会话后,我发现了这一点……令人惊讶的是,错误出现在 templateURL - 它应该是 templateUrl。

【讨论】:

  • 难以置信。我希望你的发现在未来几个世纪对人们有所帮助。谢谢。
猜你喜欢
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 2017-12-07
相关资源
最近更新 更多