从控制器中的指令获取值

时间:2016-10-14 09:00:05

标签: javascript angularjs angularjs-directive angularjs-scope

  

我知道很久以前就曾问过这些问题,但没有一个问题适合我。我是指导工作的新手,可能是缺乏学习,我无法解决我的问题。

我在控制器中需要一个变量指令但是没有办法传递该值。这是我的指令代码

return {
      restrict: 'A',
      require: 'ngModel',
      scope: {
        image: '=ngModel',
        allowedTypes: '@accept',
        dimensionRestrictions: '&dimensions',
      },
      link: function($scope, element, attrs, ngModel) {
        element.bind('change', function(event) {
          var file = (event.srcElement || event.target).files[0];
          ngModel.$setViewValue(file, 'change');
        });
      };
     } 

我需要控制器中的file变量,但我不知道如何做到这一点...... 我试过this fiddle,但它不适合我的情况。

任何形式的帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您可以将控制器中的功能发送到指令,您可以在其中传递file变量

请参阅此Example,它将适用于您的案例

答案 1 :(得分:0)

试试这个:

return {
        restrict: 'A',
        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]);
                });
            });
        }
    };