2017-10-19 60 views
0

我有我的自定義指令,在父HTML按鈕點擊自定義指令的控制器方法?角JS

<uploading-multiple-files controlmodel="serviceProfile.serviceProfileAttachments" 
    upload-all-action="uploadAll" delete-action="deleteImage" 
    attachment-type-id="scopeTypeId" url="scopeUrl" enable-upload="enableUpload"> 
</uploading-multiple-files> 

上傳文件,這樣在父控制器deleteAction代碼

$scope.deleteImage = function (attachment) { 

     alert(attachment.id); 
    } 

現在我uploadAllAction工作我想要實現deleteAction在這裏類似的方法是它的實現

function uploadingMultipleFiles(FileUploader, $rootScope, $http, $filter, $window, browser) { 
    return { 
     replace: false, 
     scope: { 
      'attachmentTypeId': '=?', 
      'controlmodel': '=', 
      'url': '=', 
      'maxsize': '=?', 
      'uploadAllAction': '=?', 
      'deleteAction': '=?', 
      "counter": '=?', 
      "enableUpload": '=?', 
      "isRequired": '=?' 
     }, 
     templateUrl: '/app/views/Controls/UploadingMultipleFilesDirective/UploadingMultipleFilesDirectiveTemplate.html', 
     link: link 
    }; 

現在我想初始化我的方法

<div class="col-md-6" ng-repeat="item in controlmodelFiltered"> 
     <div class="col-md-12"> 
      <button class="info" ng-click="delete(item)">x</button>   
     </div> 
    </div> 

所以用來初始化deleteAction

scope.delete = function (attachment) { 
     debugger; 
     scope.deleteAction(attachment); //error delete action is not defined   
    } 

當我點擊刪除按鈕指令JS初始化附件deleteAction,它應該調用控制器的方法,然後在指令 定義指令ng-click="delete(item)",但我得到的錯誤

TypeError: scope.deleteAction is not a function

+0

發佈'deleteAction'方法 –

+0

一般情況下,避免在組件中使用雙向的「=」綁定。而是使用單向''<''綁定輸入並使用表達式''&''綁定輸出。這將使轉換到Angular 2+更容易。有關更多信息,請參閱[AngularJS開發人員指南 - 基於組件的應用程序架構](https://docs.angularjs.org/guide/component#component-based-application-architecture)。 – georgeawg

回答

0

你應該passs的deleteAction作爲活動綁定`deleteAction: '&',並那麼你可以這樣做

<button class="info" ng-click="deleteAction({item})">x</button> 

而且如前所述,我會建議避免造成部件在使用雙向綁定。