好吧,我想我明白了......
首先是一点背景知识:我需要它的原因是将 Angular 放在 Node Express 之上,并让 Jade 为我处理我的部分。
所以这是你必须做的事情......(喝啤酒,然后花 20 多个小时在上面!!!)......
设置module时,$routeProvider
全局保存:
// app.js:
var routeProvider
, app = angular.module('Isomorph', ['ngResource']).config(function($routeProvider){
routeProvider = $routeProvider;
$routeProvider
.when('/', {templateUrl: '/login', controller: 'AppCtrl'})
.when('/home', {templateUrl: '/', controller: 'AppCtrl'})
.when('/login', {templateUrl: '/login', controller: 'AppCtrl'})
.when('/SAMPLE', {templateUrl: '/SAMPLE', controller: 'SAMPLECtrl'})
.when('/map', {templateUrl: '/map', controller: 'MapCtrl'})
.when('/chat', {templateUrl: '/chat', controller: 'ChatCtrl'})
.when('/blog', {templateUrl: '/blog', controller: 'BlogCtrl'})
.when('/files', {templateUrl: '/files', controller: 'FilesCtrl'})
.when('/tasks', {templateUrl: '/tasks', controller: 'TasksCtrl'})
.when('/tasks/new', {templateUrl: '/tasks/new', controller: 'NewTaskCtrl'})
.when('/tasks/:id', {templateUrl: '/tasks', controller: 'ViewTaskCtrl'})
.when('/tasks/:id/edit', {templateUrl: '/tasks', controller: 'EditTaskCtrl'})
.when('/tasks/:id/delete', {templateUrl: '/tasks', controller: 'DeleteTaskCtrl'})
.otherwise({redirectTo: '/login'});
});
// ctrls.js
...
app.controller('EditTaskCtrl', function($scope, $routeParams, $location, $http){
var idParam = $routeParams.id;
routeProvider.when('/tasks/:id/edit/', {templateUrl: '/tasks/' + idParam + '/edit'});
$location.path('/tasks/' + idParam + '/edit/');
});
...
这可能比需要的信息更多......
基本上,您需要$routeProvider
全局存储module的var,例如,routeProvider
以便您的控制器可以访问它。
然后你就可以使用routeProvider
并创建一个新的路由(你不能“重置路由”/“重新Promise”;你必须创建一个新路由),我只是在最后添加了一个斜杠(/),以便它是语义作为第一。
然后(在您的控制器中),将 设置为templateUrl
您想要点击的视图。
取出对象的controller
属性.when()
,以免陷入无限请求循环。
最后(仍在控制器中),用于$location.path()
重定向到刚刚创建的路由。
如果您对如何将 Angular 应用程序贴在 Express 应用程序上感兴趣,您可以在这里 fork 我的 repo:https : //github.com/cScarlson/isomorph。
如果您想使用 WebSockets 将 HTML 绑定到数据库,此方法还允许您保留 AngularJS 双向数据绑定:否则,如果没有此方法,您的 Angular 数据绑定将只输出{{model.param}}
.
如果您此时克隆它,则您的机器上将需要 mongoDB 来运行它。
希望这能解决这个问题!
科迪
不要喝你的洗澡水。