Được rồi, nghĩ là tôi hiểu rồi ...
Thông tin cơ bản đầu tiên: Lý do tôi cần điều này là gắn Angular lên trên Node Express và nhờ Jade xử lý các phần của tôi cho tôi.
Vì vậy, đây là những gìchya phải làm ... (uống bia và dành hơn 20 giờ cho nó trước !!!) ...
Khi bạn thiết lập mô-đun của mình, hãy lưu $routeProvidertoàn cục:
// 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/');
});
...
Đó có thể là nhiều thông tin hơn những gì cần thiết ...
Về cơ bản, bạn sẽ muốn lưu trữ $routeProvidervar của Mô-đun trên toàn cầu, ví dụ như routeProviderđể Bộ điều khiển của bạn có thể truy cập nó.
Sau đó, bạn chỉ có thể sử dụng routeProvidervà tạo một tuyến đường MỚI (bạn không thể 'ĐẶT LẠI tuyến đường' / 'Quảng cáo lại'; bạn phải tạo một tuyến đường mới), tôi chỉ thêm dấu gạch chéo (/) ở cuối để nó có ngữ nghĩa là người đầu tiên.
Sau đó (bên trong Bộ điều khiển của bạn), đặt templateUrlchế độ xem bạn muốn nhấn.
Lấy ra thuộc controllertính của .when()đối tượng, vì sợ rằng bạn sẽ nhận được một vòng lặp yêu cầu vô hạn.
Và cuối cùng (vẫn bên trong Controller), sử dụng $location.path()để chuyển hướng đến tuyến đường vừa được tạo.
Nếu bạn quan tâm đến cách đưa một ứng dụng Angular vào một ứng dụng Express, bạn có thể fork repo của tôi tại đây: https://github.com/cScarlson/isomorph .
Và phương pháp này cũng cho phép bạn giữ Liên kết dữ liệu hai chiều AngularJS trong trường hợp bạn muốn liên kết HTML với cơ sở dữ liệu của mình bằng cách sử dụng WebSockets: nếu không, nếu không có phương pháp này, các liên kết dữ liệu Angular của bạn sẽ chỉ xuất ra {{model.param}}.
Nếu bạn sao chép nó vào lúc này, bạn sẽ cần mongoDB trên máy của mình để chạy nó.
Hy vọng điều này giải quyết vấn đề này!
Cody
Đừng uống nước tắm của bạn.
config()chỉ các nhà cung cấp được chuyển, không phải các trường hợp dịch vụ thực tế chẳng hạn như$routePrams.