从angularjs发布请求后,是否可以重定向到另一个View SecondView()。我知道有角像$location.path这样的东西。但我想检查控制器中的某些条件。

的JavaScript

var MyApp = angular.module("MyApp", []);
MyApp.controller("AppController", function ($scope,$http) {
    $scope.onClick = function () {
        $http({
            method: 'POST',
            url: 'Home/CheckData/',
            data: {name: 'Jhon'},
        });
    };
});


控制器:

public class HomeController : Controller
{
    //
    // GET: /Home/

    public ActionResult Index()
    {
        return View();
    }

    [HttpPost]
    public ActionResult CheckData(string name)
    {
        if (name=="Jhon")
        {
        return RedirectToAction("SecondView");}
        else{
            return View();
        }
    }

    public ActionResult SecondView()
    {
        return View();
    }
}


Index.cshtml

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/MyScript.js"></script>

<div ng-app="MyApp" ng-controller="AppController">
    <input ng-click="onClick()" type="button" value="Redirect" />
</div>

最佳答案

使用响应回调检查您的条件并执行所需的操作:

$scope.onClick = function() {
  $http.post('Home/CheckData/', { name: 'Jhon'}).then(function(resp) {
    if (resp.data.someVar) {
      // javascript redirect using `$location`
    } else {
      // set some scope variable to display error
    }
  });
};


您将需要从服务器返回适当的JSON来进行条件检查

问题有点含糊,无法提供更多细节

09-16 07:27