1、如果内容相对独立,可以把数据和页面元素一起封装成指令,有时可以考虑多层封装。
2、如果数据或者方法有公用不独立,可以考虑如下方法:
a、把数据或方法封装成service
b、指令继承scope。
3、对于service里存在异步响应情况,可以考虑如下方法:
a、传入回调函数
b、利用广播消息传递事件触发响应
c、把对象传给service,service里操作对象
指令:
compile和link:
compile只会调用一次,且完成后angular才会创建作用域。link在每次迭代式都会被调用一次,且每次迭代(比如ng-repeat)对应的数据也会随之变化。
scope类型:
scope:false 默认,直接复用使用位置所在的作用域。
scope:true 创建一个继承使用位置所在的作用域的子作用域。
scope:{} 创建一个独立的作用域。
元素属性与独立作用域间的借口关系:
@ 将特定值插入作用域,插入时用{{}},不会传递对象,全部转成字符串。
=属性对象与作用域属性值双向同步。
&回调表达式,用于创建组件的回调函数。
如何在html页面直接调用service?
不能直接调用,需要在controller里调用一次才可以。具体方法参考:http://stackoverflow.com/questions/15039837/angularjs-is-this-way-of-using-service-good