Angularjs 多个文件上传指令和一个提交按钮

Angularjs 多个文件上传指令和一个提交按钮,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有多个类别的文件上传和HTML给我有这些不同的类别,每个有一个文件上传控制多个文件。所有这些部分(以及每个部分的文件上载)都显示在一个HTML中。我创建了一个文件上传指令,并将其用于每个上传部分。这项工作可以处理一个名为“上传”点击事件的按钮,该按钮是指令的一部分 现在,有一个叫做“上传所有”的按钮,点击它我必须一次更新所有属于不同部分的文件。所以我必须在点击这个按钮时上传所有指令中的文件。我如何拥有此功能。我不确定是否有更好的方法来实现此功能,但您可以尝试: 将一个值从控制器传递给所有指令,

我有多个类别的文件上传和HTML给我有这些不同的类别,每个有一个文件上传控制多个文件。所有这些部分(以及每个部分的文件上载)都显示在一个HTML中。我创建了一个文件上传指令,并将其用于每个上传部分。这项工作可以处理一个名为“上传”点击事件的按钮,该按钮是指令的一部分


现在,有一个叫做“上传所有”的按钮,点击它我必须一次更新所有属于不同部分的文件。所以我必须在点击这个按钮时上传所有指令中的文件。我如何拥有此功能。

我不确定是否有更好的方法来实现此功能,但您可以尝试:

将一个值从控制器传递给所有指令,然后在每个指令上附加一个
$watch
。然后单击Upload All按钮将更改该值,从而触发运行所有指令

控制器:

app.controller = function('Ctrl', function($scope) {
  $scope.uploadAllFlag = false;

  $scope.uploadAll = function() {
    $scope.uploadAllFlag = !$scope.uploadAllFlag;
  }
});
指令:

app.directive = function('directive', function() {
 return {
   scope: { flag: '=' }
   link: function(scope) {
      scope.$watch('flag', function(){
         //do your upload stuff
      }
   }
});
或者,在控制器上注入$rootScope并广播一个可以通过指令捕获的事件:

app.controller = function('Ctrl', function($rootScope, $scope) {
  $scope.uploadAll = function(){
    $rootScope.$broadcast('uploadAll');
  };
});

app.directive = function('directive', function(){
 link: function(scope) {
   scope.$on('uploadAll', function(){
     //do something
   }
 }
});

我创建了一个简单的JSFIDLE。主要思想包括:

[1]http://jsfiddle.net/VpmV2/45/