加载顺序问题service>controller>directive
在controller里是抓不到directive绑定在scope上的函数的
因为controller代码的初始化执行是在directive之前的,
即加载的时候先运行controller的代码,然后运行directive里的代码
原型继承的问题
必须是在父作用域上创建的,才能继承,在子作用域上创建的,在父作用域是引用不到的
基本类型会重新创建变量,引用则不会,而只有对象上是引用
$scope.name='Roger'
//无法双向绑定,如果你在directive里修改name,controller里面是不会改变的
$scope.user={}
$scope.user.name='Roger'
//这个就可以
而且,scope上的user这个对象,必须是在父作用域(controller)上创建的,才能继承,你在子作用域(directive)上创建的对象,不是继承父作用域,怎么双向绑定,父作用域怎么访问呢?
//directive.js
scope.user={};
scope.user.name='Roger';
//在controller.js你想初始化一个值
$scope.user.name='Jenny'; //user is undefined
所以最后我自己的解决办法是
先在controller里面声明user,$scope.user={}
然后在directive里面
if(typeof(scope.user)==="undefined"){
scope.user={}
}
然后你可以在controller里面为directive初始化数据