0

既存の MVC 3 サイトで Angular を使用しようとしています。最初にロードされた項目でプライマリ ngApp が動作するようになりましたが、モジュールを追加して実装しようとするとすぐに$routeParams、ルート プロバイダーが故障し始めたように見えます。私の MVC 3 アプリケーションには、/Article/ReadArticle/keyキーを null にすることを許可する有効なルート ルートがあり、要求された記事を配信する対応するコントローラー/アクションがあります。keyが null または空の場合、最後に入力された記事を提供します。JsonResultビューの代わりにを返すことを除いて、同じことを行う別の投稿アクションがあります。

MVC で構築されたモデルを除外するようにビューを変更したため、アクションは基本的にすべての角度テンプレートを含む html ページを単純に返します。angular コントローラーは JsonResult の post アクションを呼び出し、すべてピーチです。サンプルに従って角度モジュールにルーティングを追加しましたが、何らかの理由でルートをキャッチしていないようです:

'use strict';

/* App Module */

angular.module('je', []).
  config(['$routeProvider', function ($routeProvider) {
      $routeProvider.
      when('/Article/ReadArticle/:key', { templateUrl: '/Angular/ArticleView.html', controller: ArticleCtrl }) //.
      //otherwise({ templateUrl: '/Angular/ArticleView.html', controller: ArticleCtrl });
  } ]);

otherwise呼び出しをコメントアウトしました。そこに残しておくと機能しますが、デフォルトの記事を表示するだけです。などの有効なルートを手動で入力し/Article/ReadArticle/Some_Valid_Keyても、適切な$routeParams. コメントアウトされているため、一致するルートがないように見えるため、テンプレートは読み込まれず、ページは空白です。

function ArticleCtrl($scope, $routeParams, $http) {
    console.log($routeParams.key);
    $http.post("/Article/GetArticleText", { "textkey": $routeParams.key }).success(function (data) {
        console.log(data);
        $scope.article = data;
    }).
    error(function (data, status) {
        console.log(data);
        console.log("Request failed");
        console.log(status);
    });
} 

サンプルによると、この時点で$routeParams.keyデータが入力されているはずです。Some_Valid_Key明らかに私の期待は現実と一致していませんが、ルートを動作させるために欠けている部分は何ですか?

4

1 に答える 1

0

AngularJS ルートは、URL のハッシュの後に定義されます。したがって、ベース URL が であったシナリオでは/Article/ReadArticle/key、現在ルートは定義されていません。これが、(行をコメントアウトする前にotherwise) デフォルトルートがたどられた理由です。AngularJS が定義されたルートをたどるためには、URL は次のようになっている必要がありますhttp://mysite.com/someurl/#/Article/ReadArticle/Some_Valid_Key

于 2013-03-12T18:52:57.610 に答える