Page 316 - AngularJS权威教程
P. 316

296  第 21 章  架构


                          $scope.sendRegister = function() {}
                      });
                 我们可以在视图里调用这个指令,就像调用其他指令那样:

                 <div login-form
                     on-login="sendLogin(user)"
                     on-register="sendRegister(user)"></div>
                 我们的视图变量安全地藏到指令里去了,不再需要在控制器里持有视图条件了。让控制器精
             简是最佳实践,使用指令能让我们有效地做到这一点。
                 此外,像上面那样把登录的路由隔离到指令中,也使得测试它们的功能更容易。


             在控制器之间共享数据

                 在Angular里,我们可以通过几种不同的方式在控制器之间传递数据。我们可以把控制器嵌
             套在同一个父控制器中,允许每个控制器独立修改父控制器$scope上的属性值,或者可以在服务
             中共享数据。
                 尽量把数据存在服务内部,但是更好的方式要视情况而定。比如说,在一个对话框里,把正
             在显示的数据放在父控制器里更有道理。


             21.4 指令


                 知道什么时候写指令跟知道什么时候不写同样重要。更多的情况下,写指令是个好主意。
                 就像在上面看到的那样,它们减少了控制器之中的混乱。

                 测试指令也比测试控制器容易得多。
                 指令并不一定要有视图模板。通常情况下,它们可以只作为视图之下处理数据的垫片。
             ngModelController控制器就是这种功能派上用场的一个例子。


             21.5 测试


                 我们总是鼓励测试我们的程序。我们不断为各种复杂度的功能编写单元测试。这些测试让我
             们对代码有信心,不管这信心有多小。专注于测试也让我们的时间更有效,并且更关注于功能。
                 只要确信已经对Angular应用API作过单元测试了,就可以编写端到端测试。端到端测试可以
             是脆弱的,依赖于视图,所以我们把它们留到开发过程的最后阶段。不仅如此,端到端测试一般
             比单元测试慢得多,所以,在开发过程中,先写单元测试能让我们更专注于功能的实现。
                 我们鼓励对应用的所有部分编写测试。关于测试的更多信息,请参阅第19章。
   311   312   313   314   315   316   317   318   319   320   321