2016-04-04 197 views
0

如何从指令调用函数?当GetAllActivityActionDetails方法被调用时,函数不会触发。 contrller功能:Angularjs控制器指令

function GetAllActivityActionDetails() { 
     alert("GetAllActivityActionDetails"); 
} 

指令是:

app.directive("bwUpload", ['$log', '$http', function ($log, $http) { 
    return { 

     scope: { project: "=", activity: "=", action: "=", document: "=" }, 

     link: function (scope, element, attributes) { 
      element.bind("change", function (changeEvent) { 
       var reader = new FileReader(); 
       reader.onload = function (loadEvent) { 
        $log.log('onload.byteLength: ' + loadEvent.target.result.byteLength);      
        scope.$apply(function() {       
         var p = 'project_id=' + scope.project._id + '&activity_id=' + scope.activity._id + 
           '&action_name=' + scope.action.name + '&document_id=' + scope.document._id 

         var config = { 

          url: 'baf/DocumentUpload?' + p, 
          method: 'POST', 
          headers: { 'Content-Type': 'application/octet-stream' }, 
          data: new Uint8Array(loadEvent.target.result), 
          transformRequest: [] 
         }; 

         $http(config).then(
          function (resp) { 
           var response = resp.data; 
           $log.log("DocumentUpload response (fileName, length): " + response.fileName + ", " + response.length); 
           alert('Document Uploded.'); 
           //bwGlobals.refreshView() 
           alert(scope.activity._id); 

           //GetAllActivityActionDetails(scope.activity._id); 
           scope.$apply("GetAllActivityActionDetails()"); 
           alert("GetAllActivityActionDetails"); 
          }, 
          function (errResponse) { alert(errResponse); } 
         ); 
        }); 

       } 
       reader.readAsArrayBuffer(changeEvent.target.files[0]); 
      }); 
     } 
    } 
}]); 

我想打电话给GetAllActivityActionDetails()形式的指令,但它不工作

+0

你可以看到我也做: GetAllActivityActionDetails(scope.activity._id); 但相同的结果/ /不发射 – SoloThink

+0

为什么你使用指令做post方法?只是好奇,因为我会做这个服务。 – MrNew

+0

在您添加'GetAllActivityActionDetails'指令scope属性像 '范围:{GetAllActivityActionDetails: '&'}',然后就打电话'$ scope.GetAllActivityActionDetails' – Nilesh

回答

0

虽然它没有棱角模式的一个很好的做法,您可以在全局创建函数并使用窗口从指令中调用。

var GetAllActivityActionDetails = function() { 
 
    alert("GetAllActivityActionDetails"); 
 
}

然后在指令触发它想:

window.GetAllActivityActionDetails();