㈠ 使用Angularjs获取数组中的值并传值到html页面中显示出来
<!DOCTYPEhtml>
<htmlng-app="test">
<head>
<title>Freetrial</title>
</head>
<bodyng-controller="FreetrialController">
<divclass="xsy"ng-repeat="iteminfreetrial"ng-if="use('xy0001',0,item)"id="xy0001">
<ahref="{{item.sdcx()}}"><imgsrc="">{{item.imgurl}}</a>
<h1>{{item.goodstitle}}</h1>
</div>
<scripttype="text/javascript"src="../lib/angular.min.js"></script>
<script>
varapp=angular.mole('test',[]);
app.controller('FreetrialController',function($scope){
$scope.use=function(id,status,item){
varflag=false;
if(!item||(id===item.goodsid&&status===item.status)){
flag=true;
}
returnflag;
}
$scope.freetrial=[
{
goodsid:"xy0001",
imgurl:"img/178.jpg",
goodstitle:"好娃娃牌安全椅",
quantity:"10份",
cost:896,
linkt:"sdcx()",
status:0
},
{
goodsid:"xy0002",
imgurl:"img/178.jpg",
goodstitle:"时尚包",
quantity:"10份",
cost:298,
status:1
},
{
goodsid:"xy0003",
imgurl:"img/178.jpg",
goodstitle:"好娃娃",
quantity:"10份",
cost:896,
linkt:"sdcx()",
status:0
}
]
});
</script>
</body>
</html>
<!--还可以从数据上着手,先把数据按照需求重组,再输出到视图-->
㈡ angular写的过滤器 怎么引入
1.过滤器是用来格式化需要展示给用户的数据,AngularJS中含有实用的内置过滤器可以使用,也支持用户进行自定义过滤器;
2.过滤器调用方式:
(1) 在HTML的模板中绑定符合{{}} 内通过 | 符号来调用过滤器; 比如{{ name | uppercase }} ------将name字符串中的每个字符转为大写字母;
(2) 在JavaScript中可以通过$filter 来调用过滤器,比如:
[javascript] view plain
app.controller("demoController",['$scope','$filter',function($scope,$filter){
$scope.name = $filter("uppercase")('ari');
}]);
(3) 在HTML中使用过滤器时,如需要传递参数给过滤器,则需要在过滤器后面加冒号即可,若有多个参数,则在每个参数后面加入冒号即可,比如 {{ 123.4567 | number : 2}} 页面展示为 123.46
3.angularJS 提供的内置过滤器:
(1) currency: 可以将一个数值格式化为货币格式,默认的货币符号是当前客户端所处区域的货币符号;
(2)date:将日期格式化为需要的格式,具体的格式参考其API;
(3) filter:从给定数组中选择一个子集,并将其生成一个新数组返回。filter过滤器的第一个参数可以是字符串、对象或是一个用来从数组中选择元素函数,传入不同类型时表现:
1) 字符串:返回所有包含这个字符串的元素,如想返回不包含该字符串的所有元素,则在参数之前加 ! ;
2) 对象:AngularJS会将待过滤对象的属性同这个对象中的同名属性进行比较,若属性值是字符串就会判断是否包含该字符串;若希望对全部属性进行对比,将$作为键名;
3) 函数: 对待过滤数组的每个元素执行此函数,返回非假值的元素会出现在新的数组中并返回;
filter的第二个参数可以是:
1)true: 用angular.equals(excepted,actual)对两个值进行严格比较;
2) false:进行区分大小写的子字符串比较;
3)函数:运行这个函数,如果返回真值就接受这个元素;
(4) json:将一个JSON或JavaScript对象转换成字符串;
(5) limitTo :根据传入的参数生成一个新的数组或字符串,新的数组或字符串的长度取决于传入的参数,通过传入参数的正负值来控制从前面还是后面进行截取;
如果传入的长度大于被过滤的数组或字符串的长度,则整个数组或字符串都会被返回;
{{ San is very people | limitTo : 3}} ----> San {{ San is very people | limitTo : -3}} ---->ple
(6)lowercase 将过滤字符串转为小写字母; uppercase 将过滤字符串转为大写字母;
(7) number :将数字格式化成文本,第二个参数是可选,用于控制小数点后截取的位数; 如果传入的是非数字字符,则返回空字符串;
(8) orderBy:用表达式对指定的数组进行排序,可以接受两个参数,第一个参数是必须的,第二个参数是可选,第一个参数的情况:
1) 函数:当第一个参数是函数时,该函数会被当作待排序对象的getter方法;
2)字符串:对这个字符串进行解析的结果将决定数组元素的排序方式,可以使用+ 或 - 来强制进行升序和降序;
3)数组:在排序表达式中使用数组元素作为谓词; 第二个参数用来控制排序的方向;
4.自定义过滤器:
此过滤器用来定义一个名为myFilter的过滤器,作用是将传入的字符串的首字母转为大写字母;
[javascript] view plain
angular.mole("testFilter",[]).filter("myFilter",function(){
return function(input) {
if (input) {
return input[0].toUpperCase() + input.slice(1);
}
}
});
5.表单验证:
(1) 若想要屏蔽浏览器对表单的默认验证行为,则在表单元素上添加 novalidate标记,若想使用angularJS 的表单验证功能,需要保证form有name属性;
(2) input上可以使用的验证选项:
1)required:验证当前input是否有值,必填项;
2) ng-minlength/ng-maxlength:当前input能输入的最大长度和最小长度; <input name="text" ng-minlength="2" ng-maxlength="20"/>
3) ng-pattern :模式匹配,用来确保输入能够匹配指定的正则表达式;
4) email:验证输入的内容是否是电子邮件,<input type="email" name="email"/>
5) number:验证输入的内容是否是数字 <input type="number" name="age"/>
6) URL:验证输入的内容是否是URL <input type="url" name="homespace"/>
在javaScript中可以使用这些属性去对表单做出实时响应 通过formName.inputFieldName.property格式访问属性:
1) formName.inputFieldName.$pristine:用来判断用户是否修改了表单,若未修改则返回true,若修改过,则返回false;
2) formName.inputFieldName.$dirty:只用用户修改过表单,无论输入是否通过验证,该值都返回true;
3) fornName.inputFieldName.$valid:用来判断表单的内容是否合法,若表单内容是合法的则返回true;
4) fornName.inputFieldName.$invalid:用来判断表单的内容是否不合法,若表单内容是不合法的则返回true;
5) fornName.inputFieldName.$error:用来判断表单所有的验证内容以及内容是否合法,如果验证失败,则属性值为true,若输入字段的值通过验证则返回false;
(3) $parsers:
当用户同控制器进行交互并且ngModelController中的$setViewValue()方法被调用时,$parsers数组中的函数会以流水线的形式被逐个调用,第一个调用值会变传入到第二个$parse中;调用函数时,可以使用$setValidity()函数去设置表单的合法性;
(4) $formatters:
当绑定的ngModel值发生变化,并经过$parsers数组中解析器处理后,这个值会被创递给$formatters流水线,此函数可以修改并格式化这些值;
(3) ngMessages( 在AngularJS 1.3+以上版本中才包含此指令)
1)ngMessages是angularJs的一个独立模块,故需要手动加载 指令为 $ bower install --save angular-messages或在angular官网上下载此文件,然后通过html引入;
2)ngMessages还需要作为引用程序的依赖模块引入,比如angular.mole("myApp",[ngMessages]);
㈢ angularjs中怎么给表格点击添加数据
首先是html页面的编写:
<!doctypehtml>
<htmlng-app="myMole">
<head>
<metacharset="utf-8">
<title>学生信息管理</title>
//需要用到的一些库,要加载的
<scriptsrc="bower_components/angular/angular.js"></script>
<scriptsrc="bower_components/ng-table/dist/ng-table.js"></script>
<scriptsrc="bower_components/ng-table-export/ng-table-export.js"></script>
<linkrel="stylesheet"type="text/css"/>
<linkrel="stylesheet"type="text/css"/>
<linkrel="stylesheet"type="text/css">
<scriptsrc="mole/scripts/controllers/Form.js"></script>
</head>
<body>
<divui-view></div>
<divng-controller="FormController">
<h3>学生信息列表</h3>
<br>
<div>
搜索:<inputtype="text"ng-model="titleFilter"placeholder="输入关键字">//加上<trng-repeat="studentinstudents|filter:titleFilter">实现了表格内容的检索。
</div>
<br>
<tableng-table="tableParams">
<trng-repeat="studentinstudents|filter:titleFilter">//遍历每一个对象
<tdtitle="'Name'">
<spanng-if="!student.$edit">{{student.Name}}</span>
<divng-if="student.$edit"><inputtype="text"ng-model="student.Name"></div>
</td>
<tdtitle="'Id'">
<spanng-if="!student.$edit">{{student.Id}}</span>
<divng-if="student.$edit"><inputtype="text"ng-model="student.Id"></div>
</td>
<tdtitle="'Grade'">
<spanng-if="!student.$edit">{{student.Grade}}</span>
<divng-if="student.$edit"><inputtype="text"ng-model="student.Grade"></div>
</td>
<tdtitle="'Actions'"width="200">
<ang-if="!student.$edit"ng-click="student.$edit=true">Edit</a>
<ang-if="student.$edit"ng-click="student.$edit=false">Save</a>
<ang-click="deleteStudent(obj)"ng-if="student.$edit">Delete</a>
<!--<ang-click="addStudent()"ng-if="student.$edit">Add</a>-->
</td>
</tr>
</table>
<div>
<inputtype="text"ng-model="newName"placeholder="inputName"required/>
<inputtype="text"ng-model="newId"placeholder="inputId"required/>
<inputtype="text"ng-model="newGrade"placeholder="inputGrade"required/>
<inputtype="button"ng-click="addStudent()"value="Add"/>
</div>
</div>
</body>
</html>
接下来是js代码部分
varmyMole=angular.mole('myMole',['ngTable']).
controller('FormController',function($scope,ngTableParams,$sce){
$scope.students=[
{Name:'小李',Id:'201401201',Grade:'计算机技术'},
{Name:'李磊',Id:'201401202',Grade:'计算机技术'},
{Name:'夏津',Id:'201401203',Grade:'计算机技术'},
{Name:'杭州',Id:'201401204',Grade:'计算机技术'}
];
$scope.addStudent=function(){//添加学生函数
$scope.students.push({Name:$scope.newName,Id:$scope.newId,Grade:$scope.newGrade});
$scope.newName='';
$scope.newId='';
$scope.newGrade='';
};
$scope.deleteStudent=function(student){//删除一行的内容
$scope.students.splice($scope.students.indexOf(student),1);
};
});
㈣ 如何利用AngularJS服务接入外部API
如何利用AngularJS服务接入外部API
除了对HTML进行扩展的能力之外,AngularJS还提供一套简便途径、帮助我们与外部API实现交互。利用其服务与GitHub的API相对接,进而创建一套简单的库浏览器。
现在用这套基础HTML模板为起点
一、准备工作
到了这一步,应该已经拥有了一套能够切实运作的AngularJS应用程序——它可以根据搜索字符串获取GitHub库。
㈤ 怎么为hbuilder添加angularjs,让它有提示的
js 中获取前页面的参数 js 中获取前页面的参数,不是url 的参数,因为前页面传参数是用?来传,但是到第二个页 面的时候先有个查询,点击查询之后参数值就修改了。
㈥ 如何运行angularjs应用
如何利用AngularJS服务接入外部API
除了轻松对HTML进行扩展的能力之外,AngularJS还提供一套简便途径、帮助我们与外部API实现交互。在今天的教程中,我们将共同探讨如何利用其服务与GitHub的API相对接,进而创建一套简单的库浏览器。
第一步:准备工作
我们就以下面这套基础HTML模板为起点:
<!DOCTYPE html> <html> <head> <title>GitHub Search</title> </head> <body> </body> </html>
现在将AngularJS脚本添加到该文档的<head>当中:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.16/angular.min.js"></script>
在此之后,我们可以在将这套CCS样式添加到行内或者独立的文件当中:
* { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; font-family: sans-serif; } body, html { margin: 0; } p { margin: 0; } input { width: 100%; } pre { white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word; } div.repo { border-bottom: 1px solid; cursor: pointer; } #search, #repo, #user { float: left; } #search { width: 20%; } #repo { width: 60%; } #user { width: 20%; }
如大家所见,其中不存在任何多余的内容、只保留最基础的布局方案——将搜索栏置于右侧、库信息位于中央、用户库同样置于右侧。我们还需要将对应代码行打包至<pre>标签当中,此后我们还要利用它显示README文件内容——因为这些内容通常来自GitHub Flavored Markdown、而且其中一部分代码行与用户库列表存在重叠。
当然,大家可以向其中添加更多样式以提升成果的视觉效果——但请注意,本教程中的截图都采取最基本的外观设计。
大家可以未来需要编写的JavaScript代码置于本文档的<head>当中或者为其建立独立文件,但独立文件仍然需要处于AngularJS脚本之下。
第二步:模块
现在我们可以为自己的应用程序创建一个模块:
var app = angular.mole('githubsearch', []);
接下来利用ngApp指令将其添加到<body>标签当中:
<body ng-app="githubsearch">
第三步:控制器
我们还需要为自己的应用程序准备一套控制器。为了简化创建流程,我们将只为应用准备一套控制器,这样我们就不必考虑如何在不同控制器之间进行信息传递了:
app.controller('SearchController', function SearchController($scope) { });
第四步:基础服务
我们需要对自己的GitHub服务进行定义:
app.factory('GitHub', function GitHub($http) { return { }; });
我们将使用app.factory()方法,这样就能保证返回对象附带几个以后将会用到的方法。我们将使用$http服务从GitHub的API中获取数据。
第五步:搜索库
我们服务中的第一项方法负责利用GitHub API对库进行搜索。使用服务非常简单(这项函数能够进入由制造函数返回的对象):
searchRepos: function searchRepos(query, callback) { $http.get('https://api.github.com/search/repositories', { params: { q: query } }) .success(function (data) { callback(null, data); }) .error(function (e) { callback(e); }); }
$http.get()方法是执行GET请求的一种捷径。第一条参数是我们希望访问的URL。第二条参数则代表一个具备选项的对象。这里我们只需要params对象——它是一个查询参数散列,将被添加到该请求当中(其中q参数属于搜索字符串,大家可以点击此处了解更多相关信息)。
$http.get()会返回一项承诺。我们可以将监听器附加在success()与error()上,并且据此调用回调函数。
第六步:搜索栏
为了使用我们在之前几步中定义完成的函数,我们需要在自己的HTML当中添加搜索栏。相关代码非常简单,如下所示:
<div id="search"> <input ng-model="query" placeholder="search" ng-keyup="$event.keyCode == 13 && executeSearch()"> <div class="repo" ng-repeat="repo in repos" ng-click="openRepo(repo.full_name)"> <strong>{{ repo.full_name }}</strong> <p>{{ repo.description }}</p> </div> </div>
我们使用ngModel指令将该输入栏中的值指向至Scope query变量,并在用户按下回车键后利用ngKeyup调用executeSearch()函数(这样$event.keyCode == 13就会进行比较)。我们无法在AngularJS表达式中使用条件语句,但一条简单的逻辑运算符(AND)足以很好地完成这项任务。
在输入域下面,我们使用ngRepeat来显示搜索结果。我们将显示该库的完整名称与描述(如果需要显示其它不同内容,大家可以点击此处查看GitHub API说明文档中的可用域)。
我们还使用ngClick通过该库的完整名称来调用openRepo()函数,这样我们就能显示与之相关的信息。我们稍后再对该函数进行定义。
第七步:使用搜索功能
现在我们终于可以使用自己创建完成的服务了。首先,将GitHub参数添加至控制器函数(这样该服务就能被注入到AngularJS当中):
app.controller('SearchController', function SearchController($scope) {
现在定义executeSearch()函数:
$scope.executeSearch = function executeSearch() { GitHub.searchRepos($scope.query, function (error, data) { if (!error) { $scope.repos = data.items; } }); }
如大家所见,我们利用来自$scope.query的搜索字符串从当中调用GitHub.searchRepos(),而后在回调中将搜索结果(来自data.items)加入$scope.repos变量。
只要执行以上步骤,我们就能顺利显示出搜索结果。在浏览器中打开我们的HTML文件并尝试进行搜索:
第八步:获取库中的数据
现在我们已经获得了搜索功能,可以显示出库中用户所选定的信息内容。下面我们再创建一条函数,旨在通过自己的服务获取来自库的数据:
getRepo: function getRepo(name, callback) { $http.get('https://api.github.com/repos/'+ name) .success(function (data) { callback(null, data); }) .error(function (e) { callback(e); }); }
被传递至此函数的名称必须为完整名称(结构为:作者名称、斜杠、库名称——例如angular/angular.js),这是因为我们需要将其传递至GitHub
API(点击此处查看更多说明)。
第九步:获取库中的README文件
README文件中的内容并未被包含在我们利用以上函数获取到的数据当中。相反,大家需要利用另一个API进行调用及获取,因此我们需要创建以下函数:
getReadme: function getReadme(name, callback) { $http.get('https://api.github.com/repos/'+ name +'/readme') .success(function (data) { callback(null, atob(data.content)); }) .error(function (e) { callback(e); }); }
这条函数与之前我们创建完毕的两条基本相同,只不过对URL进行了变更。我们还要利用atob()函数解码README文件的内容,因为它采用base64编码机制。大家可以点击此处查看GitHub
API说明文档中与获取README文件内容相关的信息。
我们之所以没有将这两条请求塞进同一个函数当中,是因为某些库根本不具备 README文件。如果我们将二者强行结合,应用程序可能因此发生故障。
第十步:显示库信息
我们将在另一个元素<div>当中显示库的完整名称、查看过该库的人数以及README文件:
<div id="repo" ng-show="activeRepo"> <strong>{{ activeRepo.full_name }}</strong> <em>Watched by {{ activeRepo.watchers_count }} people.</em> <pre>{{ activeRepo.readme }}</pre> </div>
我们将把该信息保存在控制器Scope内的activeRepo变量当中。只要存在可以显示的数据,ngShow就会将该元素显示出来(如果不存在可以显示的数据,我们将只能看到‘Watched
by people’文本,而且没有任何库被选中)。
第十一步:更新控制器
我们还需要对控制器进行更新,从而保证其切实获取到库数据并将其纳入Scope当中。下面创建我们之前附加至ngClick指令的openRepo()函数:
$scope.openRepo = function openRepo(name) { GitHub.getRepo(name, function (error, data) { if (!error) { $scope.activeRepo = data; GitHub.getReadme(name, function (error, data) { if (!error) { $scope.activeRepo.readme = data; } else { $scope.activeRepo.readme = 'No README found!'; } }); } }); }
如大家所见,我们首先使用GitHub.getRepo()方法、检查错误而后将该数据引入activeRepo变量。接下来,我们获取README文件——如果该文件不存在,我们需要向用户提示该情况。
现在大家可以再次运行自己的应用程序并查看其实际效果:
第十二步:获取用户的库
为了将更多功能引入到我们的应用程序当中,我们将为屏幕右方已被选定库的持有者显示其所有可用库。这要求我们向服务中引入另一个方法:
getUserRepos: function getUser(name, callback) { $http.get('https://api.github.com/users/'+ name +'/repos') .success(function (data) { callback(null, data); }) .error(function (e) { callback(e); }); }
其内容与此前的几条几乎无甚差别(大家可以点击此处查看更多与此API请求相关的信息)。
第十三步:显示用户的库
这基本上相当于重现HTML中的搜索栏机制,不过我们实际需要显示的是用户名称与user对象中的库,而非输入域或者Scope本身:
<div id="user"> <strong>{{ user.login }}</strong> <div class="repo" ng-repeat="repo in user.repos" ng-click="openRepo(repo.full_name)"> <strong>{{ repo.name }}</strong> <p>{{ repo.description }}</p> </div> </div>
到了这一步,大家应该已经拥有了一套能够切实运作的AngularJS应用程序——它可以根据搜索字符串获取GitHub库。大家可以进一步对其进行迭代,例如向其中添加更多功能或者为其设计完全不同的外观样式。
转载,仅供参考,祝你愉快,满意请采纳。
㈦ angularjs怎么将字符串格式化
AngularJS 过滤器
过滤器可以使用一个管道字符(|)添加到表达式和指令中。
AngularJS 过滤器可用于转换数据:
currency 格式化数字为货币格式。
filter 从数组项中选择一个子集。
lowercase 格式化字符串为小写。
orderBy 根据某个表达式排列数组。
uppercase 格式化字符串为大写。
1.表达式中添加过滤器
过滤器可以通过一个管道字符(|)和一个过滤器添加到表达式中。.
uppercase 过滤器将字符串格式化为大写:
AngularJS 实例
<div ng-app="myApp" ng-controller="personCtrl">
<p>姓名为 {{ lastName | uppercase }}</p>
</div>
2.lowercase 过滤器将字符串格式化为小写:
AngularJS 实例
<div ng-app="myApp" ng-controller="personCtrl">
<p>姓名为 {{ lastName | lowercase }}</p>
</div>
㈧ angularjs的ng-bing中怎么写能在一个表格显示多个字段,需要怎么串接
直接用加号('+')做字符串连接就行了