angularjs 里面新增 和编辑表单的模板 可以复用吗?
发布于 10 年前 作者 yakczh 5392 次浏览 最后一次编辑是 8 年前 来自 问答

新增和编辑的表单域都差不多 除了一个是 新增 一个是更新按钮

9 回复

再问个问题,我在列表的控制器ListrCtrl中已经取到数据列表了 现在要修改某个数据项 ,通过路由可以把id传过来 ,在编辑的控制器EditCtrl里再通过后台接口传id 查出数据,然后给scope赋值, 修改完以后save ,有没有办法 从列表控制器ListrCtrl 直接把 数据项 传到编辑的控制器EditCtrl里面,不用从后台查一次 ?

@yakczh不可以,$modal可以

myApp.controller('ListCtrl', function($scope,$http) {
 $scope.phones=[];
 $http.get('content.json').success(function(data) { 
 	$scope.phones=data;
 
       $scope.$root.$broadcast("someEvent", $scope.phones);
 });


});

myApp.controller('EditCtrl', function($scope) {
  

$scope.$on("someEvent", function (event, someDate) {
console.log(someDate);

$scope.phones=someDate;

})
  console.log($scope.phones);
});

  myApp.config(['$routeProvider',function ($routeProvider) {
      $routeProvider
      .when('/list', {
        templateUrl: 'views/phones/list.html',
        controller: 'ListCtrl'
      })
 .when('/phones/:id', {
          templateUrl: 'views/phones/edit.html',
          controller:'EditCtrl'})

这个broadcast 也不管用

我觉得是可以的,比如通过本地缓存( sessionStorage,localStorage)或者 window 传递数据。我这么干过,至于这样有什么弊端,还请路过的高人分析一下

当然可以啦,比如你控制器里有个方法叫ng-click = “update($index)”.只要传入$index即可,当前的$index代表的是选中项的index。后续的怎么 更新模型视图,这个你应该比较容易吧

@fiftyk 额,这种方式是快,但是有点破坏作用域的味道,所以呢。公用一个模板,用ng-if控制需要隐藏和显示的部分。$index传递当前item index

可以,首先要确保你的View确实可以复用,然后保存的逻辑分开处理就好了。我是根据model的id来判断的

<form role="form" ng-submit="vm.model.id ? vm.update() : vm.save()"></form>

楼上这些都搞得复杂了,$http是有cache参数配置的,设置为true即可,这样即使请求多次也没关系了,注意的是有时候你需要清理cache来强制刷新数据。

回到顶部