1

ほとんどのアプリケーションで角度テンプレートを使用したいのですが、一部のページでは aspnet mvc コントローラーと ng-view に表示される部分ビューを使用したいと考えています。

私はルーティングでこのようなことを試みてきました:

when('/AccountX/Manage', { templateUrl: '/Account/Manage', controller: AccountController }).
when('/Account/Manage', { controller: AccountController }).

Account/Manage フォームも ajax に変更しましたが、フォームを投稿した後、angular が get で処理を進めているようです。

ハッシュバングなしで html5Mode を使用しています。私の目標は、常に通常の URL を持つことです。

いくつかのルートを避けるようにAngularに伝える方法はありますか? aspnet MVC の IgnoreRoute のように?

曖昧すぎてすみません。私自身の理解では、標準の aspnet mvc と angular を混合するという実用的な概念を見つけたいだけです。それが良いか悪いかは関係ありません。

4

2 に答える 2

0

それを機能させる大きな部分は、ng-app を html 要素に割り当てないようにすることです。ng-app が小さい場合、その外側の部分はルーティングの影響を受けません。

途中でいくつかの潜在的な問題があります。

  • ng-app入れ子にすることはできません。
  • 最初のものだけng-appが自動的にブートストラップされます。
  • 後者ng-appは代わりに次のように追加されます。angular.bootstrap(element[, modules]);

http://docs.angularjs.org/api/ng.directive:ngApp
http://docs.angularjs.org/api/angular.bootstrap

Angular ルーティングをトリガーしてはならない ng-app 内のリンクがある場合は、target="_self"(または任意のターゲット属性) を追加することで回避されます。

調査およびテストできる mvc4+angular+breeze の優れたプロジェクト テンプレートが利用可能です。(少なくとも VS 2012 Update 2 が必要です。)
http://www.asp.net/single-page-application/overview/templates/breezeangular-template

結論

ルーティングの影響を受けない部分が存在するように html ページ内でアプリケーションを分割し、必要に応じて ng-app 内の個々のリンクを除外することで、Asp.NET MVC 機能を AngularJS とうまく組み合わせることができます。

于 2013-07-27T04:14:15.947 に答える