angularjs中的Controller Service Template之间的
调用关系:
.controller('abc', function() {});
会在当前上下午中创建一个变量abc指向后面的function object.
这个变量可以用于后面Template模板内的{{abc.index}}指令实现
内容替换
.controller('abc', ['bb',function(bb) {}]);
除了上面的创建abc指向function对象外,还将根据'bb'名称去
查找相关的对象,实例化后当做后面function的实参传递个给函数,
这里'bb'主要是service通过.factory指令实例化的对象,
主要用于与服务器端的ajax交换数据,供controller的函数逻辑处理
DATA Binding:
MVC 编程模式中, M 用于调用提供数据与view的render 然后
在显示在设备屏幕,如果其中任何一个变化,都有从新render才能
看见相应的变化,但是angularjs中,data binding 模式与传统的
不一样,只要其中一方改变,framwork都会自动reflect到对应的模块
不需要手动重新render view
Scopes:
View 中的变量(类似{{username}}),都是记录到Scopes对象的
属性中,angularjs app有一个root scope, 但是一些指令会创建
一个scope 并attach到对应的element上,并继承它parent element
的scope属性与方法
angularjs HTML compile 如下步骤:
1. $compile 遍历所有的html element, 查找是否有match的
指令命中,如果有,就会把相关的指令添加到element的指令链内
2. 通过priority排序element 指令链中的指令,然后执行指令的compile function
这时候,每个指令都可以修改element的属性等,element的compile
function 会返回一个link function,
3. link function 会在$scope的上下文下render temp view
注册时间监听,$WATCH 变量变化等回调function
var $compile = ...; // injected into your code
var scope = ...;
var parent = ...; // DOM element where the compiled template can be appended
var html = '
';
// Step 1: parse HTML into DOM element
var template = angular.element(html);
// Step 2: compile the template
var linkFn = $compile(template);
// Step 3: link the compiled template with the scope.
var element = linkFn(scope);
// Step 4: Append to DOM (optional)
parent.appendChild(element);
anguarljs frame 中实现了DI接入技术
在client端尽量不要hard-code service端的引用
而是通过一个inject 方式把service 传递给client
具体方式有通过construction 构造方式传入service
通过setattar 方式传入service
通过interface 方式传入service
具体见wikipedia Dependency injection描述
阅读(757) | 评论(0) | 转发(0) |