Baiklah, kupikir aku mengerti ...
Sedikit latar belakang pertama: Alasan saya membutuhkan ini adalah untuk menempelkan Angular di atas Node Express dan meminta Jade memproses parsial saya untuk saya.
Jadi, inilah yang harus dilakukan ... (minum bir dan habiskan 20+ jam untuk itu dulu !!!) ...
Saat Anda menyiapkan modul Anda, simpan $routeProvidersecara global:
// 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/');
});
...
Itu mungkin lebih banyak info daripada yang dibutuhkan ...
Pada dasarnya, Anda ingin menyimpan $routeProvidervar Modul Anda secara global, misalnya routeProvideragar dapat diakses oleh Pengontrol Anda.
Kemudian Anda bisa menggunakan routeProviderdan membuat rute BARU (Anda tidak bisa 'RESET rute' / 'Janji ulang'; Anda harus membuat yang baru), saya hanya menambahkan garis miring (/) di akhir sehingga itu semantik sebagai yang pertama.
Kemudian (di dalam Controller Anda), atur templateUrlke tampilan yang ingin Anda tekan.
Keluarkan controllerproperti .when()objek, jangan sampai Anda mendapatkan loop permintaan tak terbatas.
Dan terakhir (masih di dalam Controller), gunakan $location.path()untuk mengarahkan ke rute yang baru saja dibuat.
Jika Anda tertarik dengan cara menampar aplikasi Angular ke aplikasi Express, Anda dapat membagi repo saya di sini: https://github.com/cScarlson/isomorph .
Dan metode ini juga memungkinkan Anda untuk menyimpan AngularJS Bidirectional Data-Bindings jika Anda ingin mengikat HTML ke database Anda menggunakan WebSockets: jika tidak tanpa metode ini, data-binding Angular Anda hanya akan ditampilkan {{model.param}}.
Jika Anda mengkloning ini saat ini, Anda memerlukan mongoDB di komputer Anda untuk menjalankannya.
Semoga ini menyelesaikan masalah ini!
Cody
Jangan minum air mandi Anda.
config()hanya ke penyedia yang diteruskan, bukan instance layanan sebenarnya seperti$routePrams.