Nginx配置在HTML5模式下使用angularjs路由

时间:2014-01-13 08:38:20

标签: javascript html5 node.js angularjs nginx

我正在使用angularjs route来处理nginx配置文件。

就我而言,我有这些HTML:

index.html description.html dashboard.html

dashboard.html是具有angularjs代码的那个。

这是我当前的nginx配置文件:

upstream panda.dev {
    server 127.0.0.1:3333 max_fails=3 fail_timeout=30s;
}

server {
    listen       80;
    server_name  panda.dev;
    root /Users/Jeremy/Documents/Projects/PandaUnion/web/converted-html;

    # serve static files directly
    location / {
        index index.html$args;
        try_files $uri$args $uri$args/ $uri/ /dashboard.html$args =404;
    }
}

这是我的角度代码:

PandaUnion.controller('PandaController', function($routeParams, $location) {
  console.log($routeParams);
});

var templateURL = '/partials';

PandaUnion.config(function($routeProvider, $locationProvider) {
  $locationProvider.html5Mode(true);
  return $routeProvider.when('/dashboard/:user_id', {
    templateUrl: templateURL + '/home.html'
  }).when('/dashboard/:user_id/setting', {
    templateUrl: templateURL + '/setting.html'
  }).when('/dashboard/:user_id/bill', {
    templateUrl: templateURL + '/bill.html'
  });
});

使用此配置,我可以通过访问dashboard.html获取/dashboard/123,但我无法将123作为routeParam获取角度。

我应该在访问{user_id: 123}时打印/dashboard/123,但我只看到一个空的对象。

这里出了什么问题?请帮忙......

(抱歉我的英语不好)

1 个答案:

答案 0 :(得分:1)

看一下AngularJS tutorial。正如您在那里看到的那样,您必须通过$ routeParams对象绑定参数(在您的情况下为user_id)。

所以:

  1. 为when()语句定义控制器
  2. 在该控制器中注入$ routeParams对象
  3. 将参数绑定到$ scope对象
  4. 在您的模板中,确保您在引用" user_id"
  5. 时处于控制器边界内

    希望有所帮助。