AngularJs + Web API 页面开发(一)
AngularJS这个JS框架是个神马东东我也不太清楚,我也是初学者~~
AngularJS适用于single page App,单页面程序都是局部刷新的,这一点和Ajax有第一的区别,因为使用Ajax的一个致命点是 会使浏览器的后退
按钮失效。
在AngularJs中有几个核心的知识点:scope(块),controller(控制器),service(服务),directive(指令)、Module(模块)。
请看下面我画的草图。

接下来我将结合一个简单的例子给大家讲讲如何使用AngularJS+Web API+简单Linq to sql 技术实现 增删改分页。
数据库: SQL 2005 开发工具 VS2012
浏览器用谷歌浏览器查看效果
首先是,这里三张表,人员联系User,地址表AddressInfo,城市表City(数据自己添加)。
第一步,或取得所有人员联系信息。
JS代码如下:
<script type="text/javascript">
var app = angular.module('myApp', []); app.run(function ($rootScope, $http) { var getInfo = function () {
var config = { params: { Flag: "Pre", pageIndex: } };
$rootScope.pageIndex = "";
$http.get('/api/values', config).
success(function (teamList) {
$rootScope.teamList = teamList;
}).
error(function (teamList) {
$rootScope.teamList = teamList || "Request failed";
});
/*得到所有城市信息*/
$http.get('/api/city').
success(function (cityList) {
$rootScope.cityList = cityList;;
}).
error(function (cityList) {
$rootScope.cityList = cityList || "Request failed";
});
}; getInfo(); });
</script>
html代码如下
<div ng-controller="OperateController">
<div>
<table border="" cellpadding="" cellspacing="" width="80%" style="background-color: black;">
<thead>
<tr style="background-color: white;">
<th style="width: 10%; background-color: white;">UserID</th>
<th style="width: 15%; background-color: white;">Name</th>
<th style="width: 15%; background-color: white;">Age</th>
<th style="width: 20%; background-color: white;">Address_FK</th>
<th style="width: 15%; background-color: white;">Operate</th> </tr>
</thead>
<tbody>
<tr ng-repeat='team in teamList ' ng-click="GetOne(team.UserID)">
<td style="background-color: white; height:20px;">
<input style="width: 98%" ng-model="team.UserID" /></td>
<td style="background-color: white;">
<input style="width: 98%" ng-model="team.Name" /> </td>
<td style="background-color: white;">
<input style="width: 98%" ng-model="team.Age" /></td>
<td style="background-color: white; text-align:center;"> </td> <td style="text-align: center; background-color: white;"><a ng-click="Del(team.UserID)" style="cursor: pointer;"> Delete</a></td>
</tr>
</tbody>
</table>
</div>
</div>
Html代码
因为是Web API,所以API的代码如下
我这里默认使用Values的Controller,得到数据代码如下
public class ValuesController : ApiController
{
TrainDataContext dbContext = new TrainDataContext(); // GET api/values
public IEnumerable<User> Get()
{
var UserInfo = dbContext.User.Skip().Take().ToList();
//JavaScriptSerializer josn = new JavaScriptSerializer();
//var infoStr = josn.Serialize(UserInfo);
return UserInfo;
} // GET api/values/5
public IEnumerable<User> Get(string Flag, double pageIndex)
{
int PageSize = ; double PageCount = Math.Ceiling(dbContext.User.Count() / Convert.ToDouble(PageSize));
if (Flag == "Pre")
{
if (pageIndex <= )
{
pageIndex = ;
}
else
{ pageIndex = pageIndex - ;
}
}
else if (Flag == "Next")
{ if (pageIndex >= PageCount)
{
pageIndex = PageCount;
}
else
{
pageIndex = pageIndex + ;
}
} int SkipValue =Convert.ToInt32( PageSize * (pageIndex - ));
var UserInfo = dbContext.User.Skip(SkipValue).Take(PageSize).ToList();
return UserInfo; }
C#
这里使用的Linq to sql,如果对linq to sql 一点都不了解的人可以查看我的http://www.cnblogs.com/xianrongbin/p/3266149.html这篇博文。
以上代码看不懂没关系,我慢慢讲来。
在Angular的scope是,类似与C#代码中的model,里面包含了该对象的属性及方法。
当然,我们不要忘记,每一个angular应用有且只有一个rootscope,但可以拥有多个child scope,所有的scope都是继承 了rootscope。
这里有一个概念,叫做原型继承:如果没有找到对应的属性,它将会一直向上搜索parent scope,直到到达root scope。例子如下:
<script type="text/javascript">
var app = angular.module('myApp', []);
app.controller("TestController", function ($scope) {
$scope.leader='xrb',
$scope.employee = {
dept: '项目部',
reprts: [{ name: 'name1' }, { name: 'name2' }]
};
});
</script> <div ng-controller="TestController">
{{employee.dept}}
<ul>
<li ng-repeat="employee in employee.reprts">
name:{{employee.name}}<br />
leader:{{leader}}
</li>
</ul>
</div>
原型继承
这里,leader属性在employee里是没有的,因此,JS会在同级没有时,顺着往上一级一级探索,直到达到rootscope。 因此,leader返回的值是 xrb.
其实,知道了这个概率, 我也不知道有什么用~~
Angular有一个特别的机制,叫做双向绑定机制。其实就是数据源一变,展现形式立刻改变。最简单的代码如下
<input type="text" ng-model="testname" /><br />
showtestname:{{testname}}
showtestname后面的值会根据Input里的值的变化而变化。
这里引入$apply,$digest,$watch三个关键词
AngularJs + Web API 页面开发(一)的更多相关文章
- [Angularjs]asp.net mvc+angularjs+web api单页应用
写在前面 最近的工作一直在弄一些h5的单页应用,然后嵌入到app的webview中.之前一直在用angularjs+html+ashx的一套东西.实在是玩腻了.然后就尝试通过asp.net mvc的方 ...
- 用ASP.NET Web API技术开发HTTP接口
开发工具 Visual Studio 2013 SQL Server 2008 R2 准备工作 启动Visual Studio 2013,新建一个ASP.NET Web应用程序,命名为SimpleAP ...
- 用ASP.NET Web API技术开发HTTP接口(一)
开发工具 Visual Studio 2013 SQL Server 2008 R2 准备工作 启动Visual Studio 2013,新建一个ASP.NET Web应用程序,命名为SimpleAP ...
- 用ASP.NET Web API技术开发HTTP接口(二)
在第一部分,我们创建了一个基本的ASP.NET Web API项目,新建成功了数据表,然后添加了一些测试数据,最后创建了API控制器,用json格式把数据表里面的内容成功输出到浏览器上.接下来我们将继 ...
- [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
写在前面 前篇文章整理了angularjs学习目录,有园子里的朋友问我要这方面的demo,周末也没什么事,就在之前的单页应用的demo上面添加了增删改查的操作.代码比较简单,这里只列举比较重要的代码片 ...
- 基于SpringBoot的Web API快速开发基础框架
其实还是很因为懒,才会有这个案例项目的产生,每次开启一个终端的小服务都要整理一次框架,造成重复的.不必要的.缺乏创造性的劳动,SO,本着可以用.用着简单的原则上传代码到Github,希望有需要的朋友直 ...
- 淘金客II项目问题日志(AngularJs+BootStrap+Api接口开发)
问题二: 组件,如果是modal框,那么show的时候,是不会load它的(因为load有时候是需要传送数据的),需要别的组件去主动load它.那么问题来了:哪些框直接show,哪些框不仅需要show ...
- [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序
本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...
- asp.net web api 测试帮助页面建立并测试
asp.net web api 测试帮助页面建立并测试 现在使用WEB API来开发,越来越流行. 在开发过程中的测试调试,可以使用Fiddler等工具来帮助测试外,还有: 在asp.net 中有种方 ...
随机推荐
- 关于Hibernate XXX is not mapped 错误
我的实体类是这么配置的 @Entity(name="EntityName") //必须,name为可选,对应数据库中一的个表 就会出现 XXX is not mapped. ...
- leetcode 205
205. Isomorphic Strings Given two strings s and t, determine if they are isomorphic. Two strings are ...
- NHibernate系列文章二十四:NHibernate查询之Linq查询(附程序下载)
摘要 NHibernate从3.0开始支持Linq查询.写Linq to NHibernate查询就跟写.net linq代码一样,非常灵活,可以很容易实现复杂的查询.这篇文章使用Linq to NH ...
- Java的基本程序设计结构(上)
在Java中,每一个变量属于一种类型(type).在声明变量时,变量所属的类型位于变量名之前. 例如: double salary; int vacationDays; long earthPopul ...
- iOS内存管理
iOS内存管理的方式是引用计数机制.分为MRC(人式引用计数)和ARC(自动引用计数). 为什么要学习内存管理? 内存管理方式是引用计数机制,通过控制对象的引用计数来实现操作对象的功能.一个对象的生命 ...
- 第六百一十一天 how can I 坚持
离开泛华了,在那感觉确实挺压抑的,什么环境才适合我呢.哎. 明天回济南,弟弟交房了,去看看房子,和郭娜跨个年,好好谈吧,尽快结婚了. 睡觉.
- LR常用函数以及调用自定义函数
2.LR常用函数以及调用自定义函数 2.1.LR常用函数以及对信息的判断 2.1.1. LR内部自定义函数 在LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示[il ...
- JavaScript小知识
1.<script>标签的出现使整个页面因脚本解析.运行而出现等待: 2.合并脚本,每个 HTTP请求都会产生额外的性能负担,下载一 个 100KB 的文件比下载四个 25KB的文件要快: ...
- 构建Maven聚合工程
最近,准备构建一个Maven的项目,基于模块化的结构思想,决定使用Maven的聚合工程进行构建. 环境准备: (1)eclipse 这里推荐使用spring封装的eclipse(即STS) ,STS中 ...
- Word2013创建目录
1.写好文档内容后,将光标移到标题行,点击“开始”里的“样式”->“创建样式”,为该标题创建一个新的样式,同时点击“修改”,在打开的窗口中选择左下方的“格式”,进行标题格式的调整.依次可设定子标 ...