2

ASP.NET MVC と Angularjs の両方を使用するアプリケーションがあります。Angularjs の $location プロバイダーを使用して、フィルターが追加または削除されたときに URL の検索部分を変更しています。

$location.search(searchObj);

次に、$locationChangeSuccess イベントをサブスクライブし、signalr を使用してページ上のデータを更新します。フィルターが変更されるたびに asp.net を送信する必要はありません。

$scope.$on('$locationChangeSuccess', onRouteChanged, false);

上記の機能はすべて機能しますが、クリックしたときに機能する必要があるページにいくつかの mvc アクション リンクもあります。

<a href="@(Url.Action("Details", "Video"))/{{item.id}}">
...
</a>

残念ながら、これらのリンクをクリックすると、URL は更新されますが、mvc の投稿は行われません。誰かがこの仕事をする方法を知っていれば、私は感謝します。

4

1 に答える 1

2

デフォルトでは、ディレクティブのリンクはaAngularJS の route モジュールによって処理されます。API リクエストを作成する場合は、$httpモジュールを使用して、サービスまたはファクトリにラップするか、コントローラーだけで呼び出しを行うことができます。

これを試して:

<a href="" ng-click="showVideo(@(Url.Action("Details", "Video"))/{{item.id}})">

$scope.showVideo = function (url) {
    $http.get { method: 'GET', url: url }).
    success(function (data, status, headers, config) {
        // this callback will be called asynchronously
        // when the response is available
    }).
    error(function (data, status, headers, config) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
    });
}
于 2013-09-09T03:52:14.587 に答える