$routeProvider 在第一次通过时错过了所有情况
$routeProvider misses all cases on first pass
我是 angular 的新手,我的路线有问题。我正在使用 .NET MVC 创建一个 angular SPA,虽然视图确实呈现,但我注意到我在页面上有 2 个页脚(让我猜测布局页面被呈现了两次,但正文只加载了一个时间)。我还设置了一些日志记录以查看正在发生的事情,据我所知,它总是第一次错过 "when" 个案例,但第二次抓住它们。下面是我的配置
angular.module("myApp")
.config(["$routeProvider", function ($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "Home/Home",
controller: "HomeController",
message: function () { console.log("hit /") }()
})
.when("/login", {
templateUrl: "Home/Login",
controller: "LoginFormController",
message: function () { console.log("hit /login") }()
})
.otherwise({
message:function(){console.log("users think anything else will work")}(),
redirectTo:"/"
});
}]);
这是我点击 http://localhost:54865/
时的控制台输出
hit /
hit /login
users think anything else will work
jquery-1.10.2.js:8686 Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
VM1423:30269 WARNING: Tried to load angular more than once.
如能在正确的方向上解决此问题,我们将不胜感激
编辑
我正在使用默认 MVC 路由,我有一个 'Home' 控制器,其中包含 'Index'、'Home' 和 'Login' 的方法和视图。索引视图只有
<div ng-view></div>
'Home' 视图具有使用 MVC(超大屏幕、入门等)创建 Web 应用程序时 visual studio 提供的默认内容,登录屏幕是我的登录屏幕。
这是我的布局文件的正文
<body ng-app="myApp">
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/angular")
@RenderSection("scripts", required: false)
</body>
好的,看来我对日志记录感到困惑。事实证明它并没有击中所有人。问题是布局页面被渲染了两次。我的索引页面会加载一次,然后在@RenderBody 中我有我的 ng-view,它会为整个视图提供服务,包括布局文件的新副本。我能够通过在我的 Home 控制器上返回部分视图来摆脱这个问题。
我是 angular 的新手,我的路线有问题。我正在使用 .NET MVC 创建一个 angular SPA,虽然视图确实呈现,但我注意到我在页面上有 2 个页脚(让我猜测布局页面被呈现了两次,但正文只加载了一个时间)。我还设置了一些日志记录以查看正在发生的事情,据我所知,它总是第一次错过 "when" 个案例,但第二次抓住它们。下面是我的配置
angular.module("myApp")
.config(["$routeProvider", function ($routeProvider) {
$routeProvider
.when("/", {
templateUrl: "Home/Home",
controller: "HomeController",
message: function () { console.log("hit /") }()
})
.when("/login", {
templateUrl: "Home/Login",
controller: "LoginFormController",
message: function () { console.log("hit /login") }()
})
.otherwise({
message:function(){console.log("users think anything else will work")}(),
redirectTo:"/"
});
}]);
这是我点击 http://localhost:54865/
时的控制台输出hit /
hit /login
users think anything else will work
jquery-1.10.2.js:8686 Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
VM1423:30269 WARNING: Tried to load angular more than once.
如能在正确的方向上解决此问题,我们将不胜感激
编辑
我正在使用默认 MVC 路由,我有一个 'Home' 控制器,其中包含 'Index'、'Home' 和 'Login' 的方法和视图。索引视图只有
<div ng-view></div>
'Home' 视图具有使用 MVC(超大屏幕、入门等)创建 Web 应用程序时 visual studio 提供的默认内容,登录屏幕是我的登录屏幕。
这是我的布局文件的正文
<body ng-app="myApp">
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@Scripts.Render("~/bundles/angular")
@RenderSection("scripts", required: false)
</body>
好的,看来我对日志记录感到困惑。事实证明它并没有击中所有人。问题是布局页面被渲染了两次。我的索引页面会加载一次,然后在@RenderBody 中我有我的 ng-view,它会为整个视图提供服务,包括布局文件的新副本。我能够通过在我的 Home 控制器上返回部分视图来摆脱这个问题。