谈到angularJS controller的继承,一般都会想到父子scope,对应的父子controller,才能做好继承。
实践中有这样的一个场景,有2套页面,页面组件,风格大部分都一样,不同的可能是绑定的数据等稍有不同,如果简单copy一下html模板,controll的js文件,也能达到完成任务的效果,但是坏处是一份代码写了2边,如果万一要调整代码,还要改写2份,那AngularJS有没有提供这种场景下的controller继承实现呢
有,那就是$controller 服务,参考 https://docs.angularjs.org/api/ng/service/$controller
这个东西本来是做单元测试的,例如如下代码:
[img]http://dl2.iteye.com/upload/attachment/0121/0771/4e99d456-618c-3123-b94c-3e944af7ed02.png[/img]
实际项目中,如下这么用,更方便
[img]http://dl2.iteye.com/upload/attachment/0121/0773/5fd72052-895d-3a86-b954-62f87c9e6756.png[/img]
看下接口定义:
$controller(constructor, locals);
第一个参数不难理解。
第二个,一般都这么写{$scope:$scope}。原因是,scope是html和controller之间的粘合剂,它和html强绑定,故而当想继承某个controller时,要把当前绑定的scope传入进去
实践中有这样的一个场景,有2套页面,页面组件,风格大部分都一样,不同的可能是绑定的数据等稍有不同,如果简单copy一下html模板,controll的js文件,也能达到完成任务的效果,但是坏处是一份代码写了2边,如果万一要调整代码,还要改写2份,那AngularJS有没有提供这种场景下的controller继承实现呢
有,那就是$controller 服务,参考 https://docs.angularjs.org/api/ng/service/$controller
这个东西本来是做单元测试的,例如如下代码:
[img]http://dl2.iteye.com/upload/attachment/0121/0771/4e99d456-618c-3123-b94c-3e944af7ed02.png[/img]
实际项目中,如下这么用,更方便
[img]http://dl2.iteye.com/upload/attachment/0121/0773/5fd72052-895d-3a86-b954-62f87c9e6756.png[/img]
看下接口定义:
$controller(constructor, locals);
第一个参数不难理解。
第二个,一般都这么写{$scope:$scope}。原因是,scope是html和controller之间的粘合剂,它和html强绑定,故而当想继承某个controller时,要把当前绑定的scope传入进去