• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >AngularJS > AngularJS实用开发技巧(推荐)

AngularJS实用开发技巧(推荐)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-30

本文主要包含angularjs开发框架,angularjs开发工具,angularjs开发环境,angularjs开发指南,angularjs开发实例等相关知识,希望在学习及工作中可以帮助到您

一、开端

Angular JS 是一组用来开发Web页面的框架、模板以及数据绑定和丰富UI组件。它提供web应用的架构,无需进行手工DOM操作。 AngularJS很小,只有60K,兼容主流浏览器,与jQuery 配合良好。

二、基础原则了解

①angular的一些入门了解

一、基础知识

1.angular放弃了IE8

2.四大核心分别是mvc、模块化、指令系统、双向数据绑定

二、一些原则

1.不要复用controller,一个控制器一般只负责一小块视图。

2.不要在controller里面操作dom。

3.不要在contorller里面做数据格式化,ng有很好的表单控件。

4.不要在controller里面做数据过滤操作,有$filter服务。

5.一般情况下,controller是不会互相调用的,控制器之间的交互会通过事件进行。

6.angular利用指令来复用view。

7.$scope是一个树型结构,与DOM标签平行。

8.子$scope对象会继承父$scope上的属性和方法。

9.每一个angular应用只有一个$rootScope对象。(一般位于ng-app上)。

10.可以用angular.element($0).scope()进行调试。

11.使用ngRoute进行视图之间的路由。

三、HTML页面最常用且实用的angular内置指令

①.ng-class(适用于类似点赞、关注等某个样式会因为某个操作改变的情况)

ng-class 指令用于给 HTML 元素动态绑定一个或多个 CSS 类。ng-class 指令的值可以是字符串,对象,或一个数组。

如果是字符串,多个类名使用空格分隔。

如果是对象,需要使用 key-value 对,key 是一个布尔值,value 为你想要添加的类名。只有在 key 为 true 时类才会被添加。

如果是数组,可以由字符串或对象组合组成,数组的元素可以是字符串或对象。

建议的两种使用方式:

一、字符串形式,代码如下:

<i class="icon" ng-class="{true:'ion-ios-heart',false:'ion-ios-heart-outline'}[AccountInfo.isFocus]" ng-click='wetherFocus()'>
</i>
</div>

这样的意思就是,i标签有一个基础类为icon,ng-class则绑定了一个动态的类,而这个类要取哪一个值则由AccountInfo.isFocus的值是true或者false来决定,若其值为true则i标签会添加ion-ios-heart这个类,若其值为false则i标签会添加ion-ios-heart-outline

这个类。i标签还绑定了一个ng-click的事件,在这个事件里面除了处理相应的逻辑之外,还决定AccountInfo.isFocus的值。这样的话,当发生点击操作的时候,自然就改变i标签相应的类,继而表现出不同的样式了。

二、key-value的样式,代码如下:

<i class="icon" ng-class="{'ion-ios-heart':isIos,'ion-android-heart':isAndroid}"> </i>
</div>

显然,由代码则可以看出,这样的含义就是当isIos为true的时候就会取ion-ios-heart这个类,当isAndroid的值为true的时候,就会取ion-android-heart这个类。

②.ng-show和ng-hide(适用于对于不同的情况显示两种不同的内容时) 

ng-show 指令在表达式为 true 时显示指定的 HTML 元素,否则隐藏指定的 HTML 元素。

ng-hide 指令在表达式为 true 时隐藏指定的 HTML 元素,否则显示指定的 HTML 元素。

哈哈,看着就是水火不容的兄弟。。。。

例子如下:

<div class="keyboard">
<span class="keyboardIcon" ng-click="toggleMenu()"></span>
</div>
<div class="footer-menu">
<ul class="menu-list" ng-show="menuState">
...
</ul>
<div class="footer-send" ng-hide="menuState">
...
</div>
</div>

设置一个布尔变量menuState(实际开发中你可以用表达式,三目运算式等等),当其为true的时候,ng-show的内容会显示,ng-hide的内容会隐藏。反之则反之。。。

③.ng-switch(适用于在多种情况下显示不同的内容时)

ng-switch 指令根据表达式显示或隐藏对应的部分。

对应的子元素使用 ng-switch-when 指令,如果匹配选中选择显示,其他为匹配的则移除。

通过使用 ng-switch-default 指令设置默认选项,如果都没有匹配的情况,默认选项会显示。

例子:

<div ng-switch="essayType">
<div class="list-cart" ng-switch-when="4">
....
</div>
<div class="list-cart left-pic" ng-switch-when="3">
....
</div>
<div class="single-pic" ng-switch-when="1">
...
</div>
<div class="single-pic" ng-switch-when="2">
...
</div>
<div class="single-pic" ng-switch-default>
...
</div>
</div>
</div>

④.ng-model(这里主要说一下ng-model神奇的小坑坑)

ng-model 指令绑定了 HTML 表单元素到 scope 变量中。

如果 scope 中不存在变量, 将会创建它。ng-model常用于<input>, <select>, <textarea>等元素。

如下代码:

<div class="WhatISay">
<textarea name="my-massage-detail" ng-model="content" class="my-massage-detail" placeholder="请输入留言">
</textarea>
<a class="button btn"ng-click="submitMes()">提交</a><br></div>
</div>

按照定义,理论上来说我们提交的时候,直接在controller里面获取在页面定义了的ng-model的值,是可以的。但是实际上这样是不可行的。亲测发现输出了一个undefined,而且,如果在controller里面定义ng-model的初始值的话,获取到的就是初始值而不是改变后的最新值。

查找了一些资料,大概意思就是说。angular限制了我们的一些定义。我们只能使用一个非原始的对象来传递参数。

什么意思呢。稍微改一下上面的例子,如下:

html代码:

<div class="WhatISay">
<textarea name="my-massage-detail" ng-model="model.content" class="my-massage-detail" placeholder="请输入留言">
</textarea>
<a class="button btn"ng-click="submitMes()">提交</a>
</div>
</div>

controller代码:

$scope.model = {};
$scope.model.content = '';
$scope.submitMes=function(){
console.log($scope.model.content);
}
</div>

就是我们是定义了一个对象,然后把ng-model定义为这个对象里面的一个属性这样来处理的。这样子,我们就得到了ng-model的最新值了。

还有一种比较简单的方式就是直接把ng-model作为参数传进去就好了。

例子如下:

//HTML代码
<input type="text" ng-model="code">
<button ng-click="setCode(code)">Login</button><br>
//controller代码
$scope.setCode = function(code){
alert(code);
}
</div>

四、数据交互实用技巧

①Promise的利用

ES6定义了Promise对象。这个对象挺好用的,特别是用在与后台交互的时候。既预防回调过深,又可以针对一些情况做统一处理,还提高了代码的可读性。在angularJs里面也封装了这样一个服务,就是$q。

$q是做为angularjs的一个服务而存在的,只是对promise异步编程模式的一个简化实现版。defer对象(延迟对象)可以通$q.defer()获取,该对象有三个方法:

resolve(value):向promise对象异步执行体发送消息告诉他我已经成功完成任务,value即为发送的消息。

reject(value): 向promise对象异步执行体发送消息告诉他我已经不可能完成这个任务了,value即为发送的消息。

notify(value): 向promise对象异步执行体发送消息告诉他我现在任务完成的情况,value即为发送的消息。

  这些消息发送完promise会调用现有的回调函数。

promise即与这个defer对象的承诺对象。promise对象可以通过defer.promise获取,promise对象的一些方法:
<

您可能想查找下面的文章:

  • 浅谈angularjs依赖服务注入写法的注意点
  • AngularJS的脏检查深入分析
  • AngularJS2中一种button切换效果的实现方法(二)
  • angularJS深拷贝详解
  • AngularJS执行流程详解
  • Angularjs单选改为多选的开发过程及问题解析
  • 基于Angularjs+mybatis实现二级评论系统(仿简书)
  • 理解AngularJs篇:30分钟快速掌握AngularJs
  • AngularJS 应用身份认证的技巧总结
  • AngularJs基于角色的前端访问控制的实现

相关文章

  • 2017-05-30AngularJS入门教程之REST和定制服务详解
  • 2017-05-30AngularJS变量及过滤器Filter用法分析
  • 2017-05-30Angular实现一个简单的多选复选框的弹出框指令实例
  • 2017-05-30AngularJS入门教程之AngularJS表达式
  • 2017-05-30AngularJS下对数组的对比分析
  • 2017-05-30AngularJS中处理多个promise的方式
  • 2017-05-30Angular.Js之Scope作用域的学习教程
  • 2017-05-30AngularJS学习笔记之TodoMVC的分析
  • 2017-05-30AngularJS仿苹果滑屏删除控件
  • 2017-05-30AngularJS 与百度地图的结合实例

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • AngularJS中比较两个数组是否相同
    • 基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
    • Angular.JS学习之依赖注入$injector详析
    • AngularJS基础 ng-open 指令简单实例
    • 详解如何在Angular中快速定位DOM元素
    • AngularJS指令详解及示例代码
    • AngularJS 单元测试(二)详解
    • AngularJS辅助库browserTrigger用法示例
    • AngularJS $modal弹出框实例代码
    • Angular.Js中过滤器filter与自定义过滤器filter实例详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有