1

Express.js ルーティング/question/ask

app.get('/question/ask', function (req, res){
    console.log('index.js');
    console.log('came to question/:id');
    res.render('app');
});

対応する angularjs ルーティングは次のとおりです。

when('/ask', {
  templateUrl: 'partials/askQuestion',
  controller: 'xController'
}).

一方、それはあるべきです:-

when('/question/ask', {
  templateUrl: 'partials/askQuestion',
  controller: 'xController'
}).

モードで仕事をしてい$locationProvider.html5Mode(true);ます。

とにかく、後のangularjsルーティングを機能させることができますか? angularjs 1.1.5 バージョンを使用しています。

編集:-

app.get('/*', function (req, res){
    console.log('index.js');
    console.log('came to question/:id');
    res.render('app');
});

にも同じ問題があります。角度ルートは最後の/askforのみをルーティングし/question/askます。

私にとっての問題は、次のうちの1つしか実行できないことです:-

www.example.com/question/:qId 
www.example.com/discussion/:aId

以前when('/:id', {/question/または/discussion/

4

2 に答える 2

0

Express と Angular で同じルートがある場合、ユーザーがブラウザに URL を直接入力すると Express ルートにヒットしますが、ユーザーがアプリケーション内をナビゲートしている場合は Angular ルートにヒットします。

これは、あなたの望むことですか ?

REST API 用にサーバー上に別のルート セットを用意し、URL としてのユーザー タイプに関係なくアプリケーションにサービスを提供するためのキャッチ オール ルートを用意し、サーバー ルートが打つ。もちろん、アプリケーション内でのナビゲーションは Angular ルートによって処理されます。問題は、ディープリンクが得られないことです。

他のアプリの中には、サーバーとクライアントの両方で同じルートを持つものがあります。このようにして、何があってもコンテンツを提供できます。

アプリケーションのブートストラップ コードと必要な URL の両方を確実に取得して、ディープ リンクを可能にするために、関連するルートの書き換えを作成する人もいます。

乾杯

于 2013-11-08T10:16:59.410 に答える
0

angularバージョン1.2.0-rc.3を使用すると、問題が解決します。

変化する:

var myApp = angular.module('myApp', []);

var myApp = angular.module('myApp', ['ngRoute']);

含まれるもの:-

script(type='text/javascript', src='js/angular-route.js')
于 2013-11-08T13:29:43.223 に答える