-1

在我的 Angular 应用程序中,我试图呈现在用户单击链接时加载到索引页面中的部分内容。之前使用以下代码运行良好:

//app.js in Angular
angular.module('myApp', [
  'ngSanitize',
  'ngRoute',
  ...
]).
config(['$routeProvider', '$locationProvider', '$sceDelegateProvider', function($routeProvider, $locationProvider, $sceDelegateProvider) {
  $routeProvider.when('/view1', {templateUrl: 'partials/partial1.html', controller: 'MainController'});
  $routeProvider.when('/File/:fileID', {templateUrl: 'partials/currentFile.html', controller: 'FileController', controllerAs: 'file'});
  $routeProvider.otherwise({redirectTo: '/view1'});
  $sceDelegateProvider.resourceUrlWhitelist([
    'self',
    'https://www.url.com/**']);
  $locationProvider.html5Mode(true);
}]);

但是当我添加 Express 时,它不起作用:

var express = require("express");
var logfmt = require("logfmt");
var app = express();

app.use(logfmt.requestLogger());

app.use(express.static(__dirname + '/app'));
app.use('/bower_components', express.static(__dirname + '/bower_components'));

app.get('*', function(req, res) {
  res.sendfile('./app/index.html');
});

如果我只想显示索引页,这很好用。但是,当我添加以下代码时,它会显示纯 HTML(部分的),但没有 CSS 或 Javascript。

app.get('/partials/currentFile.html', function(req, res) {
    res.render('./app/partials/currentFile.html');
});

如何以适用于 Angular 的方式使用 Express 渲染部分?我已经尝试查看 get()、render 和 sendfile 的 Express api,但它们对我的情况并没有太大帮助。其他用户之前在这里问过类似的问题,但他们通常涉及 Express 路由到的另一个文件,我想知道我是否可以在不添加任何额外文件的情况下做到这一点,因为仅添加一个文件来包含 Express 已经是一个问题。

currentFile.html 本身不加载任何 CSS 或 Javascript。在我添加 Express 之前,它是一个在 index.html 中加载的部分,它加载了所有附加内容。

任何帮助表示赞赏。谢谢

4

1 回答 1

0

我没有直接解决这个问题,但我解决了这个问题。问题是我想将部分渲染到索引页面上。该应用程序的总体目标是单页应用程序,因此最终,它只是一个重要的页面。

有不同的部分来渲染以进行测试会很好,但可惜似乎没有人知道我在问什么,或者我正在使问题复杂化。无论哪种方式,我都找到了解决方法,只需摆脱所有其他部分并将所有 URL 请求重定向到单页应用程序。

config(['$routeProvider', function($routeProvider) {
  $routeProvider.when('/view1', {templateUrl: 'partials/partial1.html', controller: 'MainVideoController'});
  $routeProvider.when('/view2', {templateUrl: 'partials/partial2.html', controller: 'MyCtrl2'});
  $routeProvider.when('/file', {templateUrl: 'partials/currentFile.html', controller: 'FileController', controllerAs: 'file'});
  $routeProvider.otherwise({redirectTo: '/file'});
...

请注意,尝试访问 domain.com/view1 或 /view2 时,部分 view1 和 view2 不起作用。

于 2014-05-31T05:09:43.343 回答