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. 十五、polygon API

    How polygons are handled internally The five basic polygonal API classes Construction History and Tw ...

  2. Window对象方法

    Window对象方法 scrollBy() 按照指定的像素值来滚动内容. scrollTo() 把内容滚动到指定的坐标. setInterval() 按照指定的周期(以毫秒计)来调用函数或计算表达式. ...

  3. logging 日志模块学习

    logging 日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪,所以还是灰常重要滴,下面我就来从入门到放弃的系统学习一下日志既可以在屏幕上显示,又可以在文件中体现. ...

  4. Spring 之注解事务 @Transactional

    众所周知的ACID属性:  原子性(atomicity).一致性(consistency).隔离性(isolation)以及持久性(durability).我们无法控制一致性.原子性以及持久性,但可以 ...

  5. 利用Flex组件birdeye绘制拓扑关系图

    birdeye绘制拓扑关系图 1.flex简单介绍 Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AI ...

  6. 12,SFDC 管理员篇 - 页面配置

    1, 添加Tab Setup | Create | Tab 通过Tab我们可以为我们新建的表对象添加访问路径   2,创建自定义按钮 我们想在Account 中添加一个自定义按钮,去链接外部页面,也可 ...

  7. webservice wsdl axis2报错 Provider com.bea.xml.stream.MXParserFactory not found

    错误信息: Exception in thread "main" javax.xml.stream.FactoryConfigurationError: Provider com. ...

  8. 排序算法(JAVA)

    import java.util.Random;      /**  * 排序测试类  *   * 排序算法的分类如下:  * 1.插入排序(直接插入排序.折半插入排序.希尔排序):  * 2.交换排 ...

  9. EBS中启用OAF页面个性化三个配置

    启用OAF页面个性化三个配置(Profiles) FND:诊断英文为FND: Diagnostics,用于设置是否显示“关于此页” 个性化自助定义英文为Personalize Self-Service ...

  10. 表示即将废弃一个方法,或不赞成使用的一个方法或属性或其它,关键词 deprecated