AngularJS notes -- from 《AngularJS权威教程》(1)

1. 当AngularJS认为某个值可能发生变化时,它会运行自己的事件循环来检查这个值是否变“脏”。 调用$digest().


2. 只要遇到 $ 符号,你都可以只把它看作一个Angular对象。


3. ng-app范围内属于angularJS应用。


4. ng-controller范围内属于某个控制器。


5. 定时器对象:

$timeout(function() {
updateClock();
}, 1000)

6. 在视图中通过对象的属性而非对象本身来进行引用绑定,是Angular中的最佳实践。

function MyController($scope) {
$scope.clock = {
now: new Date()
};
var updateClock = function() {
$scope.clock.now = new Date()
};
setInterval(function() {
$scope.$apply(updateClock);
}, 1000);
updateClock();
};

7. 一个应用可以包含多个模块,每一个模块都包含了定义具体功能的代码。

angular.module('myApp', []);

8. 作用域提供了监视数据模型变化的能力。它允许开发者使用其中的 apply 机制,将数据模型的变化在整个应用范围内进行通知。

9. AngularJS启动并生成视图时,会将根 ng-app 元素同 $rootScope 进行绑定。 $rootScope 是所有 $scope 对象的最上层。$rootScope 是AngularJS中最接近全局作用域的对象。在 $rootScope 上附加太多业务逻并不是好主意,这与污染JavaScript的全局作用域是一样的。


10. $scope 对象的生命周期处理有四个不同阶段。

      -- 在创建控制器或指令时,AngularJS会用 $injector 创建一个新的作用域,并在这个新建的控制器或指令运行时将作用域传递进去。

      -- 当Angular开始运行时,所有的 $scope 对象都会附加或者链接到视图中。

      -- 当事件循环运行时,它通常执行在顶层 $scope 对象上(被称作 $rootScope ) ,每个子作用域都执行自己的脏值检测。

      -- 当一个 $scope 在视图中不再需要时,这个作用域将会清理和销毁自己。


11. AngularJS中的控制器是一个函数,用来向视图的作用域中添加额外的功能。我们用它来给作用域对象设置初始状态,并添加自定义行为。


12. 将控制器命名为 [Name]Controller 而不是 [Name]Ctrl 是一个最佳实践。


13. 合理的方式是创建一个模块,然后在模块中创建控制器

var app = angular.module('app', []);
app.controller('FirstController', function($scope) {
$scope.message = "hello";
});

14. 尽可能地精简控制器是很好的做法。作为AngularJS开发者,使用依赖注入来访问服务可以实现这个目的。


15. AngularJS的控制器只是视图和 $scope 之间的桥梁。


16. AngularJS允许在 $scope 上设置包括对象在内的任何类型的数据,并且在视图中还可以展示对象的属性。


17. AngularJS应用的任何一个部分,无论它渲染在哪个上下文中,都有父级作用域存在。对于ng-app 所处的层级来讲,它的父级作用域就是 $rootScope 。例外:在指令内部创建的作用域被称作孤立作用域。除了孤立作用域外,所有的作用域都通过原型继承而来,也就是说它们都可以访问父级作用域。


18. 默认情况下,AngularJS在当前作用域中无法找到某个属性时,便会在父级作用域中进行查找。如果AngularJS找不到对应的属性,会顺着父级作用域一直向上寻找,直到抵达 $rootScope为止。如果在 $rootScope 中也找不到,程序会继续运行,但视图无法更新。


19. 控制器应该尽可能保持短小精悍,而在控制器中进行DOM操作和数据操作则是一个不好的实践。设计良好的应用会将复杂的逻辑放到指令和服务中。


20.  $watch 函数会监视 $scope 上的某个属性。只要属性发生变化就会调用对应的函数。可以使用 $watch 函数在 $scope 上某个属性发生变化时直接运行一个自定义函数。


??????? 21. 插值字符串

 

22. 在HTML中的模板绑定符号 {{ }} 内通过 | 符号来调用过滤器。


23. 调用过滤器:

HTML格式:
{{ name | uppercase }}

JS格式:
$scope.name = $filter('lowercase')('Ari');

HTML格式带参数:
<!-- 显示:123.46 -->
{{ 123.456789 | number:2 }}

可以用 | 符号作为分割符来同时使用多个过滤器

24. 内置过滤器:

  -- currency

  -- date

  -- filter:第一个参数可以为字符串、对象或是一个用来从数组中选择元素的函数。(?????第二个参数用来指定预期值同实际值进行比较的方式)。

  -- json:将一个JSON或JavaScript对象转换成字符串。

  -- limitTo:根据传入的参数生成一个新的数组或字符串,新的数组或字符串的长度取决于传入的参数,通过传入参数的正负值来控制从前面还是从后面开始截取。

  -- lowercase

  -- number:将数字格式化成文本。 它的第二个参数是可选的, 用来控制小数点后截取的位数。

  -- orderBy:????第一个参数(函数、字符串、数组);第二个参数控制排序的方向(是否逆向\true or false)

  -- uppercase

25. 自定义过滤器写在module中

angular.module('myApp.filters', [])
.filter('capitalize', function() {
return function(input) {
// input是我们传入的字符串
if (input) {
return input[0].toUpperCase() + input.slice(1);
}
});

====================

{{ 'ginger loves dog treats' | lowercase | capitalize }}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值