angularjs读书笔记(一)
angular:模板和数据都会发送到浏览器中,在客户端进行装配
ng-app="myApp"
声明了angular的边界
ng-app="TextController"
控制器告诉angular该模型是由哪些对象或者基本数据构成,再赋值给页面对象。
var myAppModule = angular.module('myApp',[]);
myAppModule.controller('TextController',function($scope){
var someText = {};
someText.message = 'you have started your journey';
$scope.someText = someText;
});
在这里,调用了angular对象创建了一个名为myApp的模块,
然后把控制器函数传给app模块的controller函数
模板与数据绑定流程:
用户请求起始页,请求了某页面中的angular.js
页面加载完成后,angular查找ng-app命令,定义模板边界。
遍历模板,查找指令与绑定:注册监听器,执行dom操作,从服务器获取初始化数据。
之后可能会链接到服务器加载需要显示给用户的其他数据。
angular构建应用的时候,可以将应用中的模板和数据分离开
这样就可以把模板缓存起来,加快页面的载入速度。
显示文本:
{{greet}}与ng-bind是等价的但是在加载模板时,第一种可能会被看到。
<li ng-repeat='student in students'>
表单输入:
<form ng-controller="SomeController">
<input type="checkbox" ng-model="youCheckedIt">
//对应$scope.youCheckedIt,值为true和false
</form>
ng-change:指定一个控制器方法,修改值时调用。
ng-submit:点击button提交时调用。能阻止默认的post操作
原生交互的改动:
onclick->ng-click等等。
神马是非入侵式JavaScript
问题所在:
1.并不是每个人的浏览器都支持javascript,需要让每个人都看到你的内容,
并且无需在浏览器中执行代码就能实现你的应用。(已经解决)
2.javascript在不同平台上的运行方式不同
3.事件处理器会引用全局变量中的函数,如果想把其他类库集成进来
而这些类库有相同的函数名,就会蛋疼。
4.事件监听使得代码难以维护,拓展,理解。
解决方法:
对于事件绑定,angular会屏蔽浏览器差异性
不同事件绑定的函数名相同??在angular中为两者分配不同的controller,
在两者的函数中分别进行处理。
在angular中可以编写包含业务逻辑的控制器,无需引用dom
splice(添加、删除项目的位置,删除项目的数量,新增的项目1,新增的项目二。。)
$index显示项目序号
<li ng-repeat='track in album'>
{{$index+1}}<br/>
{{track.name}}<br/>
{{track.XXX}}
</li>
显示与隐藏:
ng-show="pageState.show"//对应$scope.pageState.show//boolean值
ng-hide效果与之相反。
今天看到第25页。