客户端模板即HTML片断,angular负责装配这些片断和数据(模板的内容)。传统的web应用视图是在后台装配好之后再发送到浏览器,而angular中后台只是将模板(html片断,并不是完整的页面)发送给浏览器,由前台去组装完整的页面html
经过声明UI中的某个部分须要映射到每一个js属性,而后让他们自行同步jquery
类(这里是控制器)是须要简单的获取他们所依赖的东西,而不须要去建立他们angularjs
angular中指令是对HTML的一种扩展web
· 为应用中的模型设置初始状态浏览器
· 经过$scope对象把模型数据和函数暴露给视图(UI模板)服务器
· 监视模型其他部分的变化,并采起相应的动做app
· 为视图中的每一块功能区域建立一个控制器dom
· 控制器与UI元素之间的绑定:ide
静态方式:经过ng-controller属性函数
动态方式:经过路由把控制器绑定到一个动态加载的DOM模板片断上
· 控制器嵌套
父控制器对象上的$scope对象会被传递给子控制器的$scope,他们之间是继承的关系
除了使用控制器显式的经过$scope对象建立数据模型外,经过模板自身也能够建立数据模型:
· 经过表达式建立
· 使用ng-model属性
当数据模型中的某一个部分发生变化,$watch函数能够向你发出通知
服务都是单例对象(单个实例,standalone),他们用来执行某个任务。
简单的说,服务有点像全局函数,能够被多个控制器共用。服务分自定义服务和系统服务($打头的服务)
一个应用中通常只须要定义一个模块就ok了
视图就是模板,是一个html片断,angular经过路由服务$routeProvider来指定URL和视图之间的对应关系,同时指定一个控制器来为模板提供数据内容。
$http服务提供了一个可扩展的与服务器交互的方法列表,实际应用中咱们能够编写一个基于该服务的自定义服务从而为全部的控制器提供服务器数据交互服务。
这里和服务器交互数据是经过REST API接口来实现的,服务器只须要提供控制器所须要的数据便可,不须要提供任何关于数据该如何被显示的信息
anjularjs与jquery能够结合使用,这里是一些须要注意的问题:
12.1 document ready 事件
When you are making a page out of multiple partials/fragments in AngularJS, the document ready event for JQuery seems to fire before the page is fully assembled
参考:http://www.panda-os.com/2015/01/angularjs-jquery-dom-ready/#.VVG1ZfmqpBc
这里还有一篇待研究:
http://www.ng-newsletter.com/posts/angular-for-the-jquery-developer.html
13.1 angular的模态框由模块框模板和触发模块框的控件协同实现,这里触发控件必须在同一个控制器的做用下;
13.2 模态框控制器由分模态框控制器和模态框实例控制器组成,前者负责生成模态框实例,模态框内部的的数据处理由模态框实例控制器实现;换句话说模态框控制器和实例控制器的$scope对象是不一样的;
13.3 一个an-controller属性会建立一个控制器对象实例,不一样的an-controller即便名称相同(只是实例工厂同样),实例也不一样($scope对象不一样)
总结:同一个控制器下的视图元素要放在一块儿(在html模板中),
15.1 参考
http://www.funnyant.com/angularjs-ui-router/
15.3 urlRouterProvider
urlRouterProvider仅用来描述router状态机中没有描述的状况,如默认处理等
15.4 页面嵌套
页面嵌套是经过状态名称实现的,父状态名.子状态名 表示该子页面将嵌套在父页面中
15.5 多页面
ui-router能够经过ui-view指令在一个页面中定义多个区域,不一样的区域对应不一样的模板和控制器
当你在回调函数中更新$scope对象时,须要使用$apply显式的提醒angular更新视图,不然视图不会更新
refer:http://jimhoskins.com/2012/12/17/angularjs-and-apply.html
http://www.angularjs.cn/A0a6
'Content-Type':application/x-www-form-urlencoded
public function rules()
{
return [
[['display_cnt', 'width', 'height','user_id','name','province','city','district','area','address','description',
'media_type','terminal_type','price'], 'required'],
];
}