わかった、わかった...
最初に少し背景:これが必要になった理由は、AngularをNode Expressの上に貼り付け、Jadeにパーシャルを処理してもらうためです。
だからここに何をしなければならないか...(ビールを飲んで、最初に20時間以上費やしてください!!!)...
モジュールを設定するときに、$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
varをグローバルに保存します。たとえばrouteProvider
、コントローラーからアクセスできるようにします。
次にrouteProvider
、新しいルートを使用して作成するだけです(「ルートをリセットする」/「再約束」することはできません。新しいルートを作成する必要があります)。最後にスラッシュ(/)を追加しただけなので、意味がわかります。最初として。
次に(コントローラー内で)、templateUrl
ヒットするビューに設定します。
オブジェクトのcontroller
プロパティを取り出し.when()
ます。無限のリクエストループが発生しないようにしてください。
最後に(まだコントローラー内にあります)、$location.path()
作成したルートにリダイレクトするために使用します。
AngularアプリをExpressアプリに平手打ちする方法に興味がある場合は、https://github.com/cScarlson/isomorphで私のリポジトリをフォークできます。
また、このメソッドを使用すると、WebSocketを使用してHTMLをデータベースにバインドする場合に備えて、AngularJSの双方向データバインディングを保持することができます{{model.param}}
。
この時点でこれを複製する場合、それを実行するにはマシンにmongoDBが必要です。
これでこの問題が解決することを願っています!
コーディ
お風呂の水を飲まないでください。
config()
プロバイダーのみへの注入ターゲットが渡されるため、などの実際のサービスインスタンスは渡されません$routePrams
。