Javascript AngularJS MVC4不使用ngResource
我是新手。我正在进行的演示项目不喜欢使用ngResource而不是$http或$q promise语法 当我点击下面Registration.html中的Courses链接时,它开始一遍又一遍地调用angular controller,直到浏览器崩溃。 还有一点奇怪的是,Registration.html页面的内容一次又一次地加载到ng view div中 提前感谢您的帮助 以下是我认为与问题相关的部分 Web.config摘录 WebApiConfig.vb RouteConfig.vb …现在谈谈棱角的东西。我的主页名为Registration.html。这个演示站点与学生班级注册有关,因此名称 Registration.html 下面是api/课程的结果 这不应该相关,但这是我的Templates/Courses.html文件Javascript AngularJS MVC4不使用ngResource,javascript,vb.net,angularjs,asp.net-mvc-4,ngresource,Javascript,Vb.net,Angularjs,Asp.net Mvc 4,Ngresource,我是新手。我正在进行的演示项目不喜欢使用ngResource而不是$http或$q promise语法 当我点击下面Registration.html中的Courses链接时,它开始一遍又一遍地调用angular controller,直到浏览器崩溃。 还有一点奇怪的是,Registration.html页面的内容一次又一次地加载到ng view div中 提前感谢您的帮助 以下是我认为与问题相关的部分 Web.config摘录 WebApiConfig.vb RouteConfig.vb …现
关于在ng视图中加载registration.html的部分很有趣。听起来url重写开始了。你能在浏览器开发工具中查看返回registration.html内容实际请求的URL吗?这很奇怪。。。这个http://localhost:61307/Registration/Templates/Courses.html 正在加载,但内容是Registration.html页面。它应该加载/Templates/Courses.html,这样以Registration开头的任何内容都会被重定向到Registration.html。这正是重写规则要做的。任何未注册的内容都将被发送到registration.html。您需要将模板移出/注册到站点的根目录中,然后将模板URL更改为“/templates/Courses.html”,等等。是的。模板已位于根目录下。如你所说,我只需添加/之前的模板。谢谢
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<rewrite>
<rules>
<rule name="Registration" stopProcessing="true">
<match url="^Registration"/>
<action type="Rewrite" url="Registration.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
Imports System.Web.Http
Public Class MvcApplication
Inherits System.Web.HttpApplication
Sub Application_Start()
AreaRegistration.RegisterAllAreas()
WebApiConfig.Register(GlobalConfiguration.Configuration)
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)
RouteConfig.RegisterRoutes(RouteTable.Routes)
End Sub
End Class
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web.Http
Imports Newtonsoft.Json.Serialization
Public Class WebApiConfig
Public Shared Sub Register(ByVal config As HttpConfiguration)
config.Routes.MapHttpRoute( _
name:="DefaultApi", _
routeTemplate:="api/{controller}/{id}", _
defaults:=New With {.id = RouteParameter.Optional} _
)
Dim jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter
jsonFormatter.SerializerSettings.ContractResolver = New CamelCasePropertyNamesContractResolver
End Sub
End Class
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.Mvc
Imports System.Web.Routing
Public Class RouteConfig
Public Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
routes.MapRoute( _
name:="Default", _
url:="{controller}/{action}/{id}", _
defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
)
End Sub
End Class
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" ng-app="registrationModule">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>College Registration</title>
<!--------- Javascript Libraries --------->
<script src="Scripts/UtilityJS/jquery-2.1.1.js"></script>
<script src="Scripts/UtilityJS/angular.js"></script>
<script src="Scripts/UtilityJS/angular-resource.js"></script>
<script src="Scripts/UtilityJS/angular-route.js"></script>
<script src="Scripts/UtilityJS/bootstrap.js"></script>
<!--------- Application Libraries --------->
<script src="Scripts/registration-module.js"></script>
<!--------- CSS --------->
<link href="Content/bootstrap.min.css" rel="stylesheet" />
<link href="Content/bootstrap-slate.min.css" rel="stylesheet" />
<!--------- Module Specific JS Libraries --------->
<script src="Scripts/Courses/courses-controller.js"></script>
<script src="Scripts/Courses/courses-repository.js"></script>
<script src="Scripts/Instructors/instructors-controller.js"></script>
<script src="Scripts/Instructors/instructors-repository.js"></script>
<script src="Scripts/Accounts/accounts-controller.js"></script>
<script src="Scripts/Accounts/accounts-repository.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="navbar navbar-default">
<div class="nabar-header">
<ul class="nav navbar-nav">
<li><span class="navbar-brand">Registration</span></li>
</ul>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/Registration/Courses">Browse Catalog</a></li>
<li><a href="/Registration/Instructors">Browse Instructors</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="/Registration/CreateAccount">Create Account</a></li>
</ul>
</div>
</div>
</div>
<div ng-view></div>
</div>
</body>
</html>
var registrationModule = angular.module('registrationModule', ['ngRoute', 'ngResource'])
.config(function ($routeProvider, $locationProvider) {
$routeProvider.when('/Registration/Courses', { templateUrl: 'Templates/Courses.html', controller: 'CoursesController' });
$routeProvider.when('/Registration/Instructors', { templateUrl: 'Templates/Instructors.html', controller: 'InstructorsController' });
$routeProvider.when('/Registration/CreateAccount', { templateUrl: 'Templates/CreateAccount.html', controller: 'AccountController' });
$locationProvider.html5Mode(true);
});
registrationModule.controller("CoursesController", function ($scope, courseRepository) {
$scope.courses = courseRepository.get();
});
registrationModule.factory('courseRepository', function ($resource) {
return {
get: function () {
return $resource('/api/Courses').query()
}
}
});
registrationModule.controller("InstructorsController", function ($scope, instructorRepository) {
$scope.instructors = instructorRepository.get();
});
registrationModule.factory('instructorRepository', function ($resource) {
return {
get: function () {
return $resource('api/Instructors').query();
}
}
});
<ArrayOfCourseVm xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/AngularTest3">
<CourseVm>
<Instructor>Ann Souloff</Instructor>
<Name>Intro to Comp-Sci</Name>
<Number>MIS101</Number>
</CourseVm>
<CourseVm>
<Instructor>Howard Meyers</Instructor>
<Name>Pascal Post-term</Name>
<Number>MIS201</Number>
</CourseVm>
<CourseVm>
<Instructor>Gary Baney</Instructor>
<Name>Data Structures using C</Name>
<Number>MIS301</Number>
</CourseVm>
</ArrayOfCourseVm>
<div class="row">
<div class="span10">
<h2>Courses</h2>
</div>
</div>
<div class="row">
<div class="span10">
<table class="table table-condensed table-hover">
<tr>
<th>Course</th>
<th>Course Name</th>
<th>Instructor</th>
</tr>
<tr ng-repeat="course in courses">
<td>{{course.number}}</td>
<td>{{course.name}}</td>
<td>{{course.instructor}}</td>
</tr>
</table>
</div>
</div>