在指令中调用回调函数不起作用

Calling callback function in directive doesn't work

我希望指令将一个值传递给回调函数(在控制器中定义)。但是,该函数从未被调用过,我也不知道为什么。

HTML:

<input type='file' fileread success="fileUploaded(data)" name="myFile" id="myFile" />

指令:

myApp.directive('fileread', function() {
    return {
        scope: {
            callBack: '&success',
        },
        link: function (scope, element) {
            scope.callBack({data: "test"});
        }
    };
});

控制器:

myApp.controller('MyCtrl', function($scope){
    $scope.fileUploaded = function(data){
        console.log(data);
    };
})

FIDDLE: http://jsfiddle.net/v6r9L6g3/4/

您的 html 中缺少 ng-app 和 ng-controller 你的 html 必须是

 <div ng-app="myApp" ng-controller="MyCtrl">
<input type='file' fileread success="fileUploaded(data)" name="myFile" id="myFile" />
</div>
以上将正常工作 或者你可以使用你的指令如下

  myApp.directive('fileread', function() {
    return {
     scope: {
    success: '&',
    },
link: function (scope, element) {

    scope.success({data: "test"});
}
};
});

这是工作示例http://jsfiddle.net/31rpuobL/

执行代码的唯一麻烦是输入必须被 div 包围,并带有 ng-controller 指令。喜欢关注

<div ng-controller="MyCtrl">
    <input type='file' fileread success="fileUploaded(data)" name="myFile" id="myFile" />
</div>

一切都很完美。