2016-07-12 3 views
0

Вот код http://jsfiddle.net/miuosh/n6yppypj/ с директивой uploadfile. Проблема заключается в том, что я использую этотAngularJS 1.5 scope в директиве ng-include

<input type="file" file-model="myFile" /> 
    <button ng-click="uploadFile()">upload me</button> 

в нг-включают = " 'взгляды/uploadFileForm.html'".

В директиве я добавляю «myFile» в область видимости. Оказывается, что Angular создает новую область с myFile. Для того, чтобы добавить «Myfile» в «rootScope» мне нужно использовать

modelSetter(scope.$parent.$parent.$parent[..],element[0].files[0]) 

что неудобно, потому что мне нужно знать, сколько родительской сферы у меня есть.

ответ

0

У меня возникла аналогичная проблема, связанная с вводом файла с угловым. вы можете создать директиву, которая будет прослушивать изменение файла и вызывать функцию контроллера с файлом. Здесь jsFiddle для этого.

var app = angular.module('app', []); 

app.controller('yourCtrl', function() { 
    $scope.image; 
    $scope.imageChanged= function (files) { 
     $scope.image = files; 
    }; 
}); 

app.directive('customOnChange', function() { 
    return { 
    restrict: 'A', 
    link: function (scope, element, attrs) { 
     var onChangeFunc = scope.$eval(attrs.customOnChange); 
     element.bind('change', function(event){ 
     var files = event.target.files; 
     onChangeFunc(files); 
     }); 

     element.bind('click', function(){ 
     element.val(''); 
     }); 
    } 
    }; 
}) 

<input type="file" id="imgInput" custom-on-change="imageChanged"/> 
+0

Спасибо, это действительно помогает. – miuosh

Смежные вопросы