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 $routeProvider
secara 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 $routeProvider
var Modul Anda secara global, misalnya routeProvider
agar dapat diakses oleh Pengontrol Anda.
Kemudian Anda bisa menggunakan routeProvider
dan 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 templateUrl
ke tampilan yang ingin Anda tekan.
Keluarkan controller
properti .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
.