javascript - 如何将参数从指令方法传递到 Controller ?

标签 javascript angularjs angularjs-directive

当方法调用时,我想将对象从指令发送到 Controller $scope,但file在 Controller 中打印未定义,知道下面的代码中实现了什么错误吗? main.html

<input type="file" file-model="myFile" callback-fn="uploadFile()"style="display: none;"/>

指令.js

angular.module('App').directive('fileModel', ['$parse', function ($parse) {
    return {
        restrict: 'A',
         scope: { callbackFn: '&' },
        link: function(scope, element, attrs) {
            var model = $parse(attrs.fileModel);
            var modelSetter = model.assign;

            element.bind('change', function(){
                scope.$apply(function(){
                    modelSetter(scope, element[0].files[0]);
                    console.log('test',element[0].files[0]);
                    var file = element[0].files[0];
                   scope.callbackFn(file);
                });
            });
        }
    };
}]);

Controller .js

    $scope.uploadFile = function(file){
       file = $scope.myFile;
           console.log('FILE',file);

        };

最佳答案

要发送该参数,您应该进行一些更改:

在表达式中指定它:

<input type="file" file-model="myFile" callback-fn="uploadFile(file)"style="display: none;"/>

然后在调用该回调时的指令中,您还必须指定它:

element.bind('change', function(){
            scope.$apply(function(){
                modelSetter(scope, element[0].files[0]);
                console.log('test',element[0].files[0]);
                var file = element[0].files[0];
               scope.callbackFn({ file: file}); <--- here
            });
        });
    }

关于javascript - 如何将参数从指令方法传递到 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40385607/

相关文章:

javascript - ng-table 从范围中过滤串联值

javascript - 所有字段编辑的单个编辑超链接选项

javascript - $.getJSON 和 $.ajax 无法返回 JSON 对象

javascript - 使用作为单引号字符串传递的值解析 JSON 对象

javascript - jQuery setAttribute 中的图像没有改变

javascript - Angular ng-repeat 标签不起作用

javascript - 刷新 Angular 指令

javascript - IE 无法使用 Javascript 和 Raphael 加载页面

angularjs - 在 Neo4j 新版本中是否可以在没有插件的情况下压缩 REST API 响应 gzip?

javascript - 我如何从 Angularjs 中的其他指令 Controller 更新指令 $scope?