Decoration3:增删改的实现

下面我们完成数据的增加、删除、修改,这里的主要知识就是前端Angularjs,遇到的问题

1、路由组件采用ui.router,链接的写法有两种:

<a href="#/coach/create">新增教练信息</a>   ----Ok
<a ui-sref="coach-edit({id:coach.id})">修改教练信息</a> ---Ok
http://localhost:8080/coachs.html#/coach-create ---这种直接通过连接跳转状态的方式是错误的

$state.go('coach',$stateParams); ---Ok
$state.go('coach',{id:333}); ---Ok

如何使用参数:

commonService.getOne($stateParams.id).then(function(data)......

注意ui-route和ngRoute相比,我这里因为用错了调试了好一阵儿

$route —> $state  
$routeParams —> $stateParams  
$routeProvider —> $stateProvider  
<div ng-view></div>  —> <div ui-view></div>  

2、控制器Controller

对于一个domain数据的增删改查,初始计划是只用一个Controller,即多视图单控制器。后来尝试发现这种操作是不行的,每一次视图更替,都要重新加载一下Controller和$scope,这一点要记录下。

“通常情况下,控制器不应被赋予太多的责任和义务,它只需要负责一个单一视图所需的业务逻辑。最常见的保持控制器“纯度”的方法是将那些不属于控制器的逻辑都封装到服务(services)中,然后在控制器中通过依赖注入调用相关服务。”

以上是Angularjs使用说明中的一句话,地址在这里

3、Factory注入和Service注入

公共逻辑封装到服务中,我在提取公共服务的时候遇到了这个坑,总是报错如下错误,是因为没有搞清楚两者在使用上的区别。

 [$injector:undef] http://errors.angularjs.org/1.5.8/$injector/undef?p0=coachService

 factory必须要有一个返回值作为依赖对象;service没有这个必要,调用构造函数实例化得到的对象即为依赖对象,出处在这里

4、remove用户数据成功的时候,不用重新加载页面,把信息直接从List页面删掉的方法,利用了without方法

$scope.coachs = _.without($scope.coachs, user);// 删除成功直接从List移走

5、关于ControllerAs

后来没有用,暂不记录,参考

posted @ 2017-04-11 01:06  mingziday  阅读(295)  评论(0编辑  收藏  举报