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 页面开发(一)的更多相关文章

  1. [Angularjs]asp.net mvc+angularjs+web api单页应用

    写在前面 最近的工作一直在弄一些h5的单页应用,然后嵌入到app的webview中.之前一直在用angularjs+html+ashx的一套东西.实在是玩腻了.然后就尝试通过asp.net mvc的方 ...

  2. 用ASP.NET Web API技术开发HTTP接口

    开发工具 Visual Studio 2013 SQL Server 2008 R2 准备工作 启动Visual Studio 2013,新建一个ASP.NET Web应用程序,命名为SimpleAP ...

  3. 用ASP.NET Web API技术开发HTTP接口(一)

    开发工具 Visual Studio 2013 SQL Server 2008 R2 准备工作 启动Visual Studio 2013,新建一个ASP.NET Web应用程序,命名为SimpleAP ...

  4. 用ASP.NET Web API技术开发HTTP接口(二)

    在第一部分,我们创建了一个基本的ASP.NET Web API项目,新建成功了数据表,然后添加了一些测试数据,最后创建了API控制器,用json格式把数据表里面的内容成功输出到浏览器上.接下来我们将继 ...

  5. [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作

    写在前面 前篇文章整理了angularjs学习目录,有园子里的朋友问我要这方面的demo,周末也没什么事,就在之前的单页应用的demo上面添加了增删改查的操作.代码比较简单,这里只列举比较重要的代码片 ...

  6. 基于SpringBoot的Web API快速开发基础框架

    其实还是很因为懒,才会有这个案例项目的产生,每次开启一个终端的小服务都要整理一次框架,造成重复的.不必要的.缺乏创造性的劳动,SO,本着可以用.用着简单的原则上传代码到Github,希望有需要的朋友直 ...

  7. 淘金客II项目问题日志(AngularJs+BootStrap+Api接口开发)

    问题二: 组件,如果是modal框,那么show的时候,是不会load它的(因为load有时候是需要传送数据的),需要别的组件去主动load它.那么问题来了:哪些框直接show,哪些框不仅需要show ...

  8. [译]ABP框架使用AngularJs,ASP.NET MVC,Web API和EntityFramework构建N层架构的SPA应用程序

    本文转自:http://www.skcode.cn/archives/281 本文演示ABP框架如何使用AngularJs,ASP.NET MVC,Web API 和EntityFramework构建 ...

  9. asp.net web api 测试帮助页面建立并测试

    asp.net web api 测试帮助页面建立并测试 现在使用WEB API来开发,越来越流行. 在开发过程中的测试调试,可以使用Fiddler等工具来帮助测试外,还有: 在asp.net 中有种方 ...

随机推荐

  1. [转载] COM 套间

    http://www.vckbase.com/index.php/wv/1315 简序 大学毕业前的最后一学期,在一家公司实习,当时的工作需要用到一些操作系统提供的组件.那时候只知道COM这个名词,并 ...

  2. Windows MFC 两个OpenGL窗口显示与线程RC问题

    问题为:背景界面是一个OpenGL窗口(对话框),在其上弹出一个OpenGL窗口(模态对话框)时, 1.上方的OpenGL窗口能响应鼠标操作等并刷新: 2.当移动或放大缩小上方的OpenGL窗口时,其 ...

  3. JSP 九大内置对象

    JSP 九大内置对象: 一 out对象主要用来向客户端输出各种数据类型内容,并且管理应用服务器上的输出缓冲区.out.print()//输出数据out.newLine()//输出一个换行符out.fl ...

  4. 64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录

    64位 SQL Server2008链接访问Oracle 过程汇总解决方法记录 经过几天不停的网上找资料,实验,终于联通了. 环境:系统:win 2008 ,SqlServer2008 R2, 连接O ...

  5. NET 强签名

    强签名: 1. 可以将强签名的dll注册到GAC,不同的应用程序可以共享同一dll. 2. 强签名的库,或者应用程序只能引用强签名的dll,不能引用未强签名的dll,但是未强签名的dll可以引用强签名 ...

  6. android入门:第一天

    android是什么? 是一个基于linux开源的操作系统,主要适用于智能设备,如智能手机,平板,智能电视,智能手表,谷歌眼镜,智能家居,由google开发,2008年开发出第一个版本 android ...

  7. python 常用高效代码写法集锦

    一.打开文件 #使用 with 语句操作文件对象 with open(r'somefileName') as somefile: for line in somefile: print line # ...

  8. C# 异常处理 <-> 连接远程数据库遇到的问题

    PS : 移植类库需要重新生成解决方案:(要不然不能将类库添加进项目)

  9. Delphi里如何让程序锁定在桌面上,win+d都无法最小化

    procedure TForm29.FormCreate(Sender: TObject); begin Windows.SetParent(Self.Handle, FindWindowEx(Fin ...

  10. KVM虚拟化技术(七)虚拟机配置文件

    KVM虚拟机的配置文件在/etc/libvirt/qemu/下,为xml文件 整体结构如下: <domain type='kvm'> 虚拟机整体信息 系统信息 硬件资源特性 突发事件处理 ...