一、angular.js是什么?

angular.js是一个javascript的框架,与jquery是一个级别的,区别是jquery主要是擅长dom操作,而angular主要是擅长绑定数据显示数据。不过在angular里面也有集成了jquery的一部分获取元素的模块以加强自身获取元素的能力。那就是方法angular.element();这个方法和jquery的$()获取元素的方法是类似的。

二、angular基础:

1、ng-app:这个是最重要的指令,所有的angular代码都要写在这个下面的控制器中,app与controller是一对多的关系,而一个程序当中可以有多个ng-app,但是angular只会自动加载第一个ng-app,其他的我们需要手动加载。

2、{{表达式}}:双括号是angular用于显示数据的一种方式,里面可以放表达式,可以进行显示数据(一般不太推荐用这个而是使用ng-bind,因为在页面还未加载完毕的时候{{}}会显示出来,影响用户体验)。

使用方式:angular的指令都是作为dom元素的属性进行使用的,ng-app主要是放在想要进行显示数据的div中作为属性。如下图,运行显示的结果是3而不是{{1+2}}。

    <div ng-app="">
<p>{{1+2}}</p>
</div>

3、ng-controller:控制器,每一个ng-app之下都可以定义多个控制器,是一对多的关系。

<div ng-app="First" ng-controller="firstController">  

注意到其中的区别,就是如果我们没有使用控制器并且只是进行简单的计算如使用{{}},那么ng-app=“”也行,但是一旦使用了控制器就必须都进行命名,并不建议使用不命名的方式,因为浏览器在解析的时候是会根据我们的app以及控制器去寻找相应的实现来显示数据的,没有命名就会出错,无法显示结果。

三、上实例接(上一篇博客:http://www.cnblogs.com/heisehenbai/p/WebAPIANDEF.html):

var app = angular.module("First", []);//创建app模块
app.controller("firstController", function ($scope, $http) {
var message = new Array();
var selectAuthor = new Array();
$http({//这个hiangular当中的ajax使用方式
method: "GET",
url: "/api/Books/"
}).then(function (data) {//在这里使用then的话回调函数传回的数据是data.data,而如果实使用sucess那么传回的就是data数组
angular.forEach(data.data, function (value, key) {//angular的forEach,使用方式和jquery的一样
message.push(value);
selectAuthor.push(value.AuthorName);
})
$scope.baseMessage = message;//$scope是angular的一个重要对象,内部包含着方法和变量,我们可以使用它定义变量,使用它之前需要在创建控制器的回调函数当中把$scope
                      作为参数传递
$scope.selectAuthors = selectAuthor;
$scope.selected = $scope.baseMessage[0];
}) $scope.detail = function detail(id) {
$http.get("/api/Books/" + id).then(function (data) {
$scope.Author = data.data.AuthorName;
$scope.Title = data.data.Title;
$scope.Year = data.data.Year;
$scope.Genre = data.data.Genre;
$scope.Price = data.data.Price;
});
} $scope.delete = function (id) {
$http.delete("api/Books/" + id).then(function () {
alert("OK,You have already delete it!");
})
} $scope.AddBook = function (selectedAuthor) {
//alert(selected.Id);
var Title = $("#Title").val();
var Year = $("#Year").val();
var Genre = $("#Genre").val();
var Price = $("#Price").val();
var book = {
AuthorId: parseInt(selectedAuthor.Id),
Title: Title,
Year: parseInt(Year),
Genre: Genre,
Price: Price
}
$http.post(
"/api/Books/", book).success(function () {
alert("Add Sucess!");
})
} $scope.ModifyBook = function (selectedModify) {
var id = selectedModify.Id;
var AuthorId = 1;
authorId(id);
function authorId(id) {
$http.get("/api/Books/" + id).then(function (data) {
AuthorId = data.data.AuthorId; var Title = $("#titleModify").val();
var Year = $("#yearModify").val();
var Genre = $("#genreModify").val();
var Price = $("#priceModify").val();
var book = {
AuthorId: AuthorId,
Id: parseInt(selectedModify.Id),
Title: Title,
Year: parseInt(Year),
Genre: Genre,
Price: Price
}
//$http.put("/api/Books/" + selectedModify.Id, book,function () {
// alert("OK,You have already modify it (*_*) ~");
//});
$http({ method: "PUT", url: "/api/Books/" + selectedModify.Id, data: { "id": selectedModify.Id, "book": book } }).then(function () {
alert("OK,You have already modify it (*_*) ~");
}); });
}
}
});

下面的是html代码:

<div ng-app="First" ng-controller="firstController">        <!--声明控制器和app模块-->

    <!--base message-->
<div id="books">
<h1>Books</h1>
<p ng-repeat="x in baseMessage"> <label ng-bind="x.Title+': '+x.AuthorName"></label><!--ng-repeat,angular中的循环-->
<a href="#" ng-click="detail(x.Id)">Details</a>    <!--绑定点击事件,可以进行传参-->
<a href="#" ng-click="delete(x.Id)">Delete</a>
</p>
</div> <!--detail message-->
<div id="details">
<h1>Details</h1>
<label>Author</label> <label>{{": "+Author}}</label><br /><!--显示在angular中使用$scope声明的变量的数据-->
<label>Title</label> <label>{{": "+Title}}</label><br />
<label>Year</label> <label>{{": "+Year}}</label><br />
<label>Genre</label> <label>{{": "+Genre}}</label><br />
<label>Price</label> <label>{{": "+Price}}</label><br />
</div>
<!--add block-->
<div id="addBlock">
<h1>Add Book</h1>
<label>Author</label><select id="Author" ng-options="item as item.AuthorName for item in baseMessage" ng-model="selectedAuthor"></select><br />
@*@Html.DropDownList("Author", new List<SelectListItem>(), new { ng_options = "item as item.AuthorName for item in baseMessage", ng_model = "selected" });*@
<!--使用ng-options创建select的option选项,注意书写的格式比较复杂-->
<label>Title</label><input type="text" id="Title" /> <br />
<label>Year</label> <input type="text" id="Year" /><br />
<label>Genre</label> <input type="text" id="Genre" /><br />
<label>Price</label> <input type="text" id="Price" /><br />
<input type="button" value="Add" ng-click="AddBook(selectedAuthor)"/>
</div>
<hr />
<!--Edit block-->
<div id="edit">
<h1>Modify Books</h1>
<label>Book:</label><select id="Author" ng-options="item as item.Title for item in baseMessage" ng-model="selectedBook"></select><br />
<label>Title:</label><input type="text" id="titleModify" /> <br />
<label>Year:</label> <input type="text" id="yearModify" /><br />
<label>Genre:</label> <input type="text" id="genreModify" /><br />
<label>Price:</label> <input type="text" id="priceModify" /><br />
<input type="button" value="Modify" ng-click="ModifyBook(selectedBook)" />
</div>
</div>

Angular初步的更多相关文章

  1. angular初步认识一

    最近比较流行MVC前端框架开发,最近研究了一个框架AngularJS框架 不说那么多,先上例子,我是个代码控 <!DOCTYPE html> <html lang="en& ...

  2. Angular.js 的初步认识

    MVC模式 模型(model)-视图(view)-控制器(controller) Angular.js采用了MVC设计模式的开源js框架 1.如何在angular.js建立自己的模块(model),控 ...

  3. angular 实现modal windows效果(即模态窗口,半透明的遮罩层),以及bootstrap(css,components,js)的初步学习

    废话不说,直接上代码.可直接看效果,对着分析..今天算是bootstrap 入门了,开心.. 突然居然很多事情就是那样,不要太多的畏惧,迈出第一步其实就成功了一半了. <html ng-app= ...

  4. angular smart-table组件如何定制化之初步研究

    table表运用在后台管理用得频繁,一般bootstrap的class="table"就能满足样式需求以及分页需求,但是每个产品经理需求不一样,比如说分页:bootstrap分页实 ...

  5. Angular 2 + 折腾记 :(7) 初步了解表单:模板驱动及数据驱动及脱坑要点

    前言 表单在整个系统中的作用相当重要,这里主要扯下响应表单的实现方式. 首先须要操作表单的模块引入这两个模块. import { FormsModule, ReactiveFormsModule } ...

  6. 数据的双向绑定 Angular JS

    接触AngularJS许了,时常问自己一些问题,如果是我实现它,会在哪些方面选择跟它相同的道路,哪些方面不同.为此,记录了一些思考,给自己回顾,也供他人参考. 初步大致有以下几个方面: 数据双向绑定 ...

  7. 利用angular结合translate为项目实现国际化

    前言 利用H5项目第一版本已经上线,话说有了第一期就有了第二期,这不要为第二期做准备了,老大发话第一件事就要利用Angular JS实现项目的国际化以及后续要借助这个框架来实现其他功能,好吧我表示没怎 ...

  8. Angular快速入门篇

    简介 AngularJS 是一个为动态WEB应用设计的结构框架,提供给大家一种新的开发应用方式,这种方式可以让你扩展HTML的语法,以弥补在构建动态WEB应用时静态文本的不足,从而在web应用程序中使 ...

  9. Angular 2.0 的设计方法和原则

    转载自:Angular 2.0 的设计方法和原则 在开始实现Angular 2.0版本之际,我们认为应该着手写一些东西,告诉大家我们在设计上的考虑,以及为什么做这样的改变.现在把这些和大家一起分享,从 ...

随机推荐

  1. IIS网站或系统验证码不显示问题——"使用了托管的处理程序,但是未安装或未完整安装 ASP.NET"

    在IIS上发布了一个系统,但是登陆页面的验证码图片一直出不来,尝试了各种办法,权限.路径.继承父类路径等都不管用,进入Login.html,对着无验证码图片的图标,右键复制图片的网址,粘贴到地址栏,出 ...

  2. zepto返回顶部动画

    点击返回顶部 function goTop(acceleration, time) { acceleration = acceleration || 0.1; time = time || 16; v ...

  3. Linux 命令备忘录(CentOS 7)

    创建目录testdir: mkdir  testdir 进入目录testdir:cd testdir 在testdir中创建空文件 1:   touch 1 在testdir中创建空文件 2:   t ...

  4. Appium 三种wait方法(appium 学习之改造轮子)

    前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html   知乎Android客户端登陆:htt ...

  5. GitLab使用

    版本:GitLab Community Edition 8.9.9 1.配置权限 public,private developer,master,owner project groups 2.ssh免 ...

  6. 不常用的SQL语句记录

    只知道字段名,查询哪些表有该字段:假如字段名为Index select sysobjects.name as tablename,syscolumns.name as columnname from  ...

  7. JDBC的操作总结

    JDBC  操作总结 JDBC是一组能够执行SQL语句的API JDBC的操作方式比较单一,简单的分为以下几个流程:  1.通过数据库厂商提供的JDB类库想DriverManager注册数据库驱动   ...

  8. 【纯css】响应式图片列表

    示例演示 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF- ...

  9. mysql安装

    什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.简单来说是本身可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数据进行新增.截取.更新.删除等操作. ...

  10. Selenium Remote-Control架构

    Selenium Remote-Control(RC)是一个测试工具,它允许你编写基于JavaScript浏览器的Web UI自动化测试,它支持很多编程语言. Selenium RC包括两部分: 一个 ...