2017-10-19 125 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> 

而且如前所述,我会建议避免造成部件在使用双向绑定。

相关问题