2

我有一个同时使用 ASP.NET MVC 和 Angularjs 的应用程序。添加或删除过滤器时,我正在使用 Angularjs $location 提供程序来修改 url 的搜索部分。

$location.search(searchObj);

然后,我订阅 $locationChangeSuccess 事件并使用信号器更新页面上的数据,而无需在每次更改过滤器时发布 asp.net 帖子。

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

以上所有方法都有效,但是,我在页面上还有一些 mvc 操作链接,单击时我需要使用这些链接。

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

不幸的是,当单击这些链接时,url 会更新,但 mvc 帖子不会发生。如果有人知道如何完成这项工作,我将不胜感激。

4

1 回答 1

2

默认情况下,指令a中的链接由 AngularJS 的路由模块处理。如果要发出 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 回答