0

我知道这些类型的问题在很多时候都被问过,但是他们都没有为我工作。我是新来的指导性工作,可能是缺乏学习,我无法解决我的问题。从控制器中的指令中获取价值

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

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,但它不是我的情况下工作。

任何类型的帮助将不胜感激。

+0

在指令或控制器之间共享变量/值的最佳方式是使用服务。创建一个角度服务并在其中设置值。将此服务注入指令和contorller,并且您可以访问 –

+0

中的变量如何执行此操作? –

+0

你是如何使用这个指令?它看起来像是为具有'ng-model'指令和自定义指令的元素创建指令。在这种情况下,自定义指令的隔离范围将与'ng-model'指令的范围相抵触。 'ng-model'控制器期望兄弟指令没有范围。 – georgeawg

回答

0

您可以从控制器到该指令发送功能,您可以将您的file变量

看到这个Example,它会在你的情况下工作

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]); 
       }); 
      }); 
     } 
    }; 
相关问题