Angular.js: рд╕рдорд░реНрдерди рдЗрдирдкреБрдЯ [рдкреНрд░рдХрд╛рд░ = рдлрд╝рд╛рдЗрд▓] рдмрд╛рдзреНрдпрдХрд╛рд░реА

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рд╕рд┐рддре░ 2012  ┬╖  145рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: angular/angular.js

рд╣рд╛рдп рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ :)

forms moderate not core feature

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдлрд╝рд╛рдЗрд▓ рд░реАрдбрд░ рдХреЗ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:

...
.directive('file', function() {
    return {
        restrict: 'E',
        template: '<input type="file" />',
        replace: true,
        require: 'ngModel',
        link: function(scope, element, attr, ctrl) {
            var listener = function() {
                scope.$apply(function() {
                    attr.multiple ? ctrl.$setViewValue(element[0].files) : ctrl.$setViewValue(element[0].files[0]);
                });
            }
            element.bind('change', listener);
        }
    }
});

<file name="image" ng-model="inputFile" accept="image/png,image/jpg,image/jpeg" />

рдлрд┐рд░ рдЖрдкрдХреЛ рдХреБрдЫ рдПрдХреНрд╕рдПрдЪрдЖрд░ рд╕рд╛рдорд╛рди рд╕реНрд╡рдпрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдЧреБрдИ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд▓реНрдкрдирд╛ рдХреА рдХрдореА рд╣реИ:

var file = $scope.inputFile;
$http.put('http://localhost:5984/demo/d06917e8d1fae1ae162ea7773c003f0b/' + file.name + '?rev=4-c10029f35a5c5ed9bd8cc31bf8589d3c', file, { headers: { 'Content-Type' : file.type } });

рдпрд╣ xhr2 (http://www.html5rocks.com/en/tutorials/file/xhr2) рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреГрдкрдпрд╛ рд▓рдВрдмреЗ рдЙрджрд╛рд╣рд░рдг рдЕрдкрд▓реЛрдб url рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдПрдХ рдХрд╛рдЙрдЪрдбрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ (рд╕рдВрд▓рдЧреНрдирдХ) рд╣реИред

рд╕рднреА 145 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХреЛрдИ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдлрд┐рд░, рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХреЗрд╡рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрдВрдзрди рд╕реЗ рдПрдХрдорд╛рддреНрд░ рд▓рд╛рдн рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред (рдХреЛрдгреАрдп рдЕрднреА рднреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдЬрд╛рдХреНрд╕ рдЕрдкрд▓реЛрдб рдХреЗ рд▓рд┐рдП рдврд╛рдВрдЪрд╛ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ)

@ рдХреЛрд▓реА : рдпрд╣ рдкреВрд░реА рд╕рдЪреНрдЪрд╛рдИ рдирд╣реАрдВ рд╣реИред

рдЗрдирдкреБрдЯ [рдлрд╝рд╛рдЗрд▓] рдкрд░ рд╡рд┐рдирд┐рдордп рдШрдЯрдирд╛ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

https://github.com/lgersman/jquery.orangevolt-ampere рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рдпрд╣реА рдкрд░рд┐рджреГрд╢реНрдп рд╣реИ: XMLHTTPRequest V2 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдбред
рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдкреЗрдЬ рд░реАрд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдлрд╛рдЗрд▓рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ [рдлрд╛рдЗрд▓] рдЪреЗрдВрдЬ рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред

рдореИрдВ рдЙрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ angularjs рдореЗрдВ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛!

рдХреНрдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ? рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдРрд╕рд╛ рдХреЛрдИ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реЛ ...

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдЕрдиреБрд░реЛрдз рдпрд╛ http.post рдХреЗ рдмрдЬрд╛рдп рд╕рд┐рд░реНрдл рдЕрдЬрд╛рдХреНрд╕ рдерд╛

рдореЗрд░реЗ рдЖрдИрдкреИрдб рд╕реЗ рднреЗрдЬреЗ рдЧрдП

рдорд╛рд░реНрдЪ 1, 2013 рдкрд░ 7:16 рдкреНрд░рдзрд╛рдирдордВрддреНрд░реА "jgoldber" < [email protected] [email protected] > рдиреЗ рд▓рд┐рдЦрд╛:

рдХреНрдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ? рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдХреЛрдИ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ Gi tHubhttps: //github.com/angular/angular.js/issues/1375#issuecomment -14321221 рдкрд░ рджреЗрдЦреЗрдВред

рдореБрдЭреЗ рдорд┐рд▓рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди: http://jsfiddle.net/marcenuc/ADukg/49/ред рдЕрдЧрд░ рдЖрдкрдХреЛ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓реЗ рддреЛ рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

рд╣рд╛рдБ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЗрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ; рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЪреБрдирдиреЗ рдФрд░ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдЗрдирдкреБрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧрд╛рдпрдм рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред

рдЯрдХреНрдХрд░ред рдЗрд╕реЗ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рдПрдХ рдФрд░ рдЪрд┐рд▓реНрд▓рд╛рдпрд╛ред

рдПрдирдЬреА-рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ, рдЖрдИрдИ 8/рдЖрдИрдИ 9 рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрд╢ рдФрд░ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдкреЙрд▓реАрдлрд┐рд▓ рд╣реИрдВ

рд╣рд╛рдБ, рдпрд╛ рддреЛ рдорд╛рди рдХреЛ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдЗрдирдкреБрдЯ рддрддреНрд╡ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ (рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ)

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдлрд╝рд╛рдЗрд▓ рд░реАрдбрд░ рдХреЗ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:

...
.directive('file', function() {
    return {
        restrict: 'E',
        template: '<input type="file" />',
        replace: true,
        require: 'ngModel',
        link: function(scope, element, attr, ctrl) {
            var listener = function() {
                scope.$apply(function() {
                    attr.multiple ? ctrl.$setViewValue(element[0].files) : ctrl.$setViewValue(element[0].files[0]);
                });
            }
            element.bind('change', listener);
        }
    }
});

<file name="image" ng-model="inputFile" accept="image/png,image/jpg,image/jpeg" />

рдлрд┐рд░ рдЖрдкрдХреЛ рдХреБрдЫ рдПрдХреНрд╕рдПрдЪрдЖрд░ рд╕рд╛рдорд╛рди рд╕реНрд╡рдпрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдЧреБрдИ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрд░реНрдХ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд▓реНрдкрдирд╛ рдХреА рдХрдореА рд╣реИ:

var file = $scope.inputFile;
$http.put('http://localhost:5984/demo/d06917e8d1fae1ae162ea7773c003f0b/' + file.name + '?rev=4-c10029f35a5c5ed9bd8cc31bf8589d3c', file, { headers: { 'Content-Type' : file.type } });

рдпрд╣ xhr2 (http://www.html5rocks.com/en/tutorials/file/xhr2) рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреГрдкрдпрд╛ рд▓рдВрдмреЗ рдЙрджрд╛рд╣рд░рдг рдЕрдкрд▓реЛрдб url рдХреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдпрд╣ рдПрдХ рдХрд╛рдЙрдЪрдбрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ (рд╕рдВрд▓рдЧреНрдирдХ) рд╣реИред

рдЗрд╕ рдлреНрд▓реИрд╢-рдЖрдзрд╛рд░рд┐рдд FileReader рдкреЙрд▓реАрдлрд┐рд▓ https://github.com/Jahdrien/FileReader рдФрд░ рдЗрд╕ рд╢реБрджреНрдз рдЬреЗрдПрд╕ рдлреЙрд░реНрдордбрд╛рдЯрд╛ рдкреЙрд▓реАрдлрд┐рд▓ рдХреЛ рдорд┐рд▓рд╛рдХрд░ IE8/9 рдореЗрдВ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ FileReader https://github.com/francois2metz/ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред Moxie рдПрдХ рдмреЗрд╣рддрд░ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рд╣реИ

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рд╕реНрдХреЗрдЪреА рдерд╛, рдХрдо рд╕реЗ рдХрдо рд╕реНрдХреЗрдЪ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ jsfiddle рдЬрд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ...

рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ:

    $scope.updateImage = '(' + function () {
      alert('moo');
    }.toString() + ')();';

рдореЗрд░реЗ рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдирд┐рдордп рдХреЙрд▓рдмреИрдХ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВред

   <input type="file" name="image" onchange="{{updateImage}}" ng-model="image">

рдЗрд╕реЗ рдХреЛрдгреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ DOM рдореЗрдВ рдбрд╛рд▓реЗрдВ

рдмрд┐рд▓реНрдХреБрд▓ рд╕реБрдВрджрд░ рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╡реЗрдмрдХрд┐рдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдХреЛрдИ рдХреНрд░реЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдореИрдВ 1.0.5 рдкрд░ рд╣реВрдВ рдФрд░ рдпрд╣ рдЕрднреА рднреА рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИред рд╣рдордиреЗ Jgoldber рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛:
http://jsfiddle.net/ADukg/2589/

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХрд╛рдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдХ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдХреБрдЫ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЕрднреА рддрдХ рдЖрдИрдИ рдкрд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ (рдЖрдИрдИ рдЬрд╛рдирдирд╛) рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЗрдирдкреБрдЯ рддрддреНрд╡ рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ, рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

http://jsfiddle.net/neilsarkar/vQzKJ/

(рдЙрдкрд░реЛрдХреНрдд jsfiddle рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд, рдзрдиреНрдпрд╡рд╛рдж @programmist)

'use strict';

function filesModelDirective(){
  return {
    controller: function($parse, $element, $attrs, $scope){
      var exp = $parse($attrs.filesModel);

      $element.on('change', function(){
        exp.assign($scope, this.files);
        $scope.$apply();
      });
    }
  };
}

рд╡рд┐рдиреНрдпрд╛рд╕:

angular.module(...).directive('filesModel', filesModelDirective)

рдЙрдкрдпреЛрдЧ:

<input type="file" files-model="someObject.files" multiple>

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЬрд▓реНрдж рдареАрдХ рдХрд░реЗрдВред

рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖ рд░рд╣реА рд╣реИрдВ .. рдХреБрдЫ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╡реИрд╕реЗ рднреА рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ

рдЪреВрдВрдХрд┐ 1.5.0 $digest рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдСрдирдЪреЗрдВрдЬ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

<input type="file" onchange="angular.element(this).scope().myController.uploadFile(this.files[0]); angular.element(this).scope().$digest();">

рдПрдирдЬреА-рдЪреЗрдВрдЬ рдФрд░ рдЗрдирдкреБрдЯ/рдлрд╛рдЗрд▓ рдкрд░ рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП +1ред рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдХ рдЫрд╡рд┐ рдХреЗ рдЕрдкрд▓реЛрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдЫрд╡рд┐ (рдЖрдХрд╛рд░ рдФрд░ рдлрд╕рд▓) рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди: рдЫрд╡рд┐ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ (рдЗрдирдкреБрдЯ/рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдФрд░ рд╡рд┐рдирд┐рдордп рдИрд╡реЗрдВрдЯ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрдирд╡рд╛рд╕ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ рдФрд░ рдлрд╝реИрдмреНрд░рд┐рдХрдЬ рдХреЗ рд╕рд╛рде рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдореИрдВ рдПрдХ рдЧреИрд░-рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ред

cztomsik - рдореИрдВ 1.0.7 рдкрд░ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ - рд╕реНрдХреЛрдк (рдпрд╣) рдлрд╝рдВрдХреНрд╢рди рдареАрдХ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдХ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЕрдкрд▓реЛрдбрдлрд╛рдЗрд▓ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдХреЛрдк (рдЗрд╕) рдХреЗ рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИред

рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝, рдореЗрд░реЗ рдкрд╛рд╕ рддрдХрдиреАрдХ рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕рдВрд╢реЛрдзрди рд╣реИ, рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ (рдореБрдЭреЗ рдЕрднреА рднреА рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреНрдпреЛрдВ рдерд╛:

<рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ = "рдлрд╝рд╛рдЗрд▓" рдирд╛рдо = "рдлрд╝рд╛рдЗрд▓" рдПрдирдЬреА-рдореЙрдбрд▓ = "рдлрд╝рд╛рдЗрд▓" рдСрдирдЪреЗрдВрдЬ = "invokeUploadFile (рдпрд╣)" />

рд╡рд░ рдЗрдирд╡реЛрдХрдЕрдкрд▓реЛрдбрдлрд╛рдЗрд▓ = рдлрд╝рдВрдХреНрд╢рди (рд╡рд╣) {
рдХреЛрдгреАрдпред рддрддреНрд╡ (рд╡рд╣)ред рдЧреБрдВрдЬрд╛рдЗрд╢ ()ред рдЕрдкрд▓реЛрдбрдлрд╛рдЗрд▓ (рд╡рд╣)
рдХреЛрдгреАрдпред рддрддреНрд╡ (рд╡рд╣)ред рдЧреБрдВрдЬрд╛рдЗрд╢ ()ред $ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ ();
}

рдХреНрдпрд╛ рдЖрдк jsfiddle/рдкреНрд▓рдВрдХрд░ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рдзрдиреНрдпрд╡рд╛рдж


    1. 2013 рд╡реА 18:17, tb01923 рд╕реВрдЪрдирд╛рдПрдВ @github.com :

рдПрдирдЬреА-рдЪреЗрдВрдЬ рдФрд░ рдЗрдирдкреБрдЯ/рдлрд╛рдЗрд▓ рдкрд░ рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП +1ред рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рдПрдХ рдЫрд╡рд┐ рдХреЗ рдЕрдкрд▓реЛрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рдЫрд╡рд┐ (рдЖрдХрд╛рд░ рдФрд░ рдлрд╕рд▓) рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди: рдЫрд╡рд┐ рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВ (рдЗрдирдкреБрдЯ/рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдФрд░ рд╡рд┐рдирд┐рдордп рдИрд╡реЗрдВрдЯ рдкрд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреИрдирд╡рд╛рд╕ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ рдФрд░ рдлрд╝реИрдмреНрд░рд┐рдХрдЬ рдХреЗ рд╕рд╛рде рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдореИрдВ рдПрдХ рдЧреИрд░-рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ред

cztomsik - рдореИрдВ 1.0.7 рдкрд░ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ - рджрд╛рдпрд░рд╛ (рдпрд╣) рдлрд╝рдВрдХреНрд╢рди рдареАрдХ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдХ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рдЕрдкрд▓реЛрдбрдлрд╛рдЗрд▓ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдХреЛрдк (рдЗрд╕) рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рджрд╕реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдореБрдЭреЗ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ

рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ рд╕рдВрджрд░реНрдн рддреНрд░реБрдЯрд┐: рдЕрдкрд▓реЛрдбрдлрд╛рдЗрд▓ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ blah.js:15
$scope.uploadFile blah.js:15
InvokeScope blah.js:4
рдкрд░рд┐рд╡рд░реНрддрди рдкрд░

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВред

+1ред рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдЪреБрдирддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ HTML5 рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

+1ред рдХреГрдкрдпрд╛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдЬ рдирд╣реАрдВ рд╣реИред

+1

+1

рдЪрд▓реЛ рджреЛрд╕реНрддреЛрдВ.. рдПрдХ рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреЛрдгреАрдп 1.2.0 рд╕реНрдЯрд┐рд▓ рдореЗрдВ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ ... рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝реА рдЬрд╛ рд░рд╣реА рд╣реИ? рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рд╕рдорд╛рдзрд╛рди рд╣реБрдП рд╣реИрдВред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдПрдХ рдХреЛрдгреАрдп рдЯреАрдо рдХреЗ рд╕рджрд╕реНрдп рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдмрд╕ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХреБрдЫ рднреА рдирд╣реАрдВ, рд╕рддреНрдпрд╛рдкрди рдФрд░ рдореЙрдбрд▓ рдЕрдкрдбреЗрдЯ рдЖрдИрдИ 7 рдореЗрдВ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ):

рдкрд░рд┐рднрд╛рд╖рд╛

  /**
   * <strong i="8">@ngdoc</strong> inputType
   * <strong i="9">@name</strong> angular.module.ng.$compileProvider.directive.input.file
   *
   * <strong i="10">@description</strong>
   * HTML file input field.
   *
   * <strong i="11">@param</strong> {string} ngModel Assignable angular expression to data-bind to.
   * <strong i="12">@param</strong> {string} multiple Allows multiple files selection.
   * <strong i="13">@param</strong> {string=} name Property name of the form under which the 
                                control is published.
   *
   * <strong i="14">@example</strong>
      <doc:example>
        <doc:source>
         <script>
           function Ctrl($scope) {
           }
         </script>
         <form name="myForm" ng-controller="Ctrl">
           file: <input type="file" ng-model="file"> single file selection.<br/>
           files: <input type="file" ng-model="files" multiple> multi-file selection.<br/>
           <tt>file.name = {{file.name}}</tt><br/>
           <tt>files.length = {{files.length}}</tt><br/>
          </form>
        </doc:source>
        <doc:scenario>
          it('should change state', function() {
            expect(binding('file.name')).toBeUndefined();

            input('file').select('a file name');
            expect(binding('file.name')).toEqual('a file name');
          });
        </doc:scenario>
      </doc:example>
   */
  'file': fileInputType,

рд╕рдорд╛рд░реЛрд╣

function fileInputType(scope, element, attr, ctrl) {
  element.bind('change', function() {
    scope.$apply(function() {
      var files = element[0].files,
          isValid = true;

      if (msie < 10) {
        files = [element[0].value];
      }

      if (attr.accept) {
        var i, j, acceptType, fileType,
            types = map(attr.accept.split(','), function(t) { return trim(t).split('/'); });
        for (i = 0; i < files.length && isValid; ++i) {
          fileType = files[i].type.split('/');
          isValid = false;
          for (j = 0; j < types.length && !isValid; ++j) {
            acceptType = types[j];
            isValid = acceptType[0] === fileType[0] && (acceptType[1] === '*' || acceptType[1] === fileType[1]);
          }
        }
      }
      ctrl.$setValidity('file', isValid);

      var viewValue;
      if (isValid) viewValue = attr.multiple ? files : files[0];
      ctrl.$setViewValue(viewValue);
    });
  });
}

+1

+1

@ntrp рдЖрдк рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХрд╛ рдкреАрдЖрд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ?

рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдереЛрдбрд╝рд╛ рд╡рд┐рд╕реНрддреГрдд рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд▓рд╣рд╛рд▓ рд╕рдордп рдирд╣реАрдВ рд╣реИред

+1

+1

-1: рдЯреНрд░реЛрд▓рдлреЗрд╕:

рдордЬрд╛рдХ рдХрд░ рд░рд╣рд╛ +1

+1

+1

+1

+1

+1

рдЗрдирдкреБрдЯ [рдЯрд╛рдЗрдк = рдлрд╝рд╛рдЗрд▓] рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ-рддрд░рдлрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЪреАрдЬ рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ, рдЬреЛ рд╕рднреА рд▓рдХреНрд╖рд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рдПрдирдЬреА-рдореЙрдбрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╣реИрдВред рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд╕реМрдВрдкрдирд╛ рдареАрдХ рдирд╣реАрдВ рд╣реИ?

http://caniuse.com/fileapi

@caitp рд░рд╛рдЗрдЯ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдирдЬреА-рдЪреЗрдВрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдФрд░ рдЪреАрдЬ рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рд╡рд╣ рд╣реИ рдлреЙрд░реНрдо рд╕рддреНрдпрд╛рдкрдиред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рд╡рдирд╡реЗ рдбрд╛рдЯрд╛рдмреЗрд╕рд┐рдВрдЧ рдлрд╝реЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдирдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рд╡рд┐рдХрд┐ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреНрдпреЛрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ рд╕рдорд░реНрдерди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИрдВред рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдЕрдкрдиреА рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╝рд░реВрд░рддреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╣реБрдд рд╕рдордп рдЧрдВрд╡рд╛ рджрд┐рдпрд╛ рдерд╛ред

рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐, рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдПрдХ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдореЙрдбрд▓ рд╕реЗ рдмрд╛рдВрдзрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдлрд╝рд╛рдЗрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдФрд░ рдлрд╝рд╛рдЗрд▓рд╕реВрдЪреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИред 2-рд╡реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреА рдХреЛрдИ рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЗрдирдХреЗ рд▓рд┐рдП рдПрдирдЬреА-рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп change рдИрд╡реЗрдВрдЯ рд╕реЗ рдЬреБрдбрд╝рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ, рдФрд░ рдЖрдк рдЙрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдЖрдк рдЗрд╕реЗ рдШреЛрд╖рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред

рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдПрдирдЬреА-рдореЙрдбрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдЬрдм рдЗрд╕рдореЗрдВ рдПрдирдЬреА-рдореЙрдбрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИ?

рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХреЛрдгреАрдп рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдРрд╕рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдПрдирдЬреА-рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рд╡реЗ рд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдПрдХ рдЕрд▓рдЧ рдирд┐рд░реНрджреЗрд╢ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрдирдкреБрдЯ [рдкреНрд░рдХрд╛рд░ = рдлрд╝рд╛рдЗрд▓] рдмрд╕ рдПрдирдЬреА-рдореЙрдбрд▓ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

  • рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХреЗ рдореВрд▓реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрджрд░реНрдн рд╕реЗ рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ
  • рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ (рдЬреЛ рдХрдИ рд▓рдХреНрд╖рд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ) рдХреЗ рдмрд┐рдирд╛ рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред --- ngRequired рд╕рддреНрдпрд╛рдкрди рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде

рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдирдкреБрдЯ [рдЯрд╛рдЗрдк = рдлрд╝рд╛рдЗрд▓] рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ $setViewValue рдЬрдм рдореВрд▓реНрдп рдмрджрд▓рддрд╛ рд╣реИ (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ), рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рд╡рд░реНрддрди (рдпрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ) рдХреЗ рдХрд╛рд░рдг рдореЙрдбрд▓ рдореВрд▓реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ngModel рдХреЛ рдмрджрд▓реЗрдВред рдмрд╕ $watch рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдВ)ред рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрдирдЬреА-рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд╡рд╣рд╛рдВ рдФрд░ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ ngModel рдХреЗ рд╕рд╛рде рднреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрд╣ рд╕рд┐рд░реНрдл ngModel рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рдХрдерди рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рд▓реЗрдХрд┐рди рдлрд┐рд░, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рд╣рдореЗрдВ рдЗрд╕ рдкрд░ рд╡рд┐рдХреА рдореЗрдВ рдпрд╛ рдЖрдо рддреМрд░ рдкрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЕрдзрд┐рдХ рдЬреЛрд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@ntrp рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреИрдЪ рд╕реНрд╡рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рдПрдХ рд╕рдмрдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА :)

рдХреНрдпрд╛ рдХреЛрдгреАрдп рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рдирд╛ рд╣реА рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХрдерди рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ a
рдХреЛрдгреАрдп рдЬреИрд╕реЗ рдврд╛рдВрдЪреЗ рдХреЗ рдкрд╛рд╕ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рд╛рдл рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ
рдпрд╣...
рдпрд╣ рд╕рдВрднрд╡рдд: рд╕рдмрд╕реЗ рднрдЯрдХрд╛рд╡ рд╡рд╛рд▓реА рдмрд╛рдд рдереА рдЬрд┐рд╕рдХрд╛ рдореБрдЭреЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬрдм рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛
рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ...

рдЖрд╣ рдареАрдХ рд╣реИ @caitp , рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдкрдврд╝рд╛ рдерд╛ рдХрд┐ рд╡рд┐рдХреА рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдХреА рдЬрд╣рдордд рдирд╣реАрдВ рдЙрдард╛рдИред рдЕрдЧрд░ рдореБрдЭреЗ рдЬрд▓реНрдж рд╣реА рдХреБрдЫ рдЦрд╛рд▓реА рд╕рдордп рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдореИрдВ рд╕рд╣рд░реНрд╖ рдпреЛрдЧрджрд╛рди рджреВрдВрдЧрд╛ :) рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ ngChange рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд▓рд┐рдП ngModel рдХрд╛ рднреА рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдБ ngModel рдХреА рдЗрддрдиреА рдЪрд░реНрдЪрд╛ рдХреНрдпреЛрдВ рд╣реИ (рдФрд░ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ)ред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЗрдирдкреБрдЯ [рдЯрд╛рдЗрдк = рдлрд╝рд╛рдЗрд▓] рдкрд░ 2-рддрд░рдлрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╕рд╣реА рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИ рдХрд┐ ngModel ngChange рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ, рдЗрдирдкреБрдЯ [рдЯрд╛рдЗрдк = рдлрд╝рд╛рдЗрд▓] рдлрд╝реАрд▓реНрдб рдХреА рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдХрд╣реЗрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдЪреБрдирдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдлреЙрд░реНрдо рдХреЛ рд╕реНрд╡рдд: рд╕рдмрдорд┐рдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд╝реАрд▓реНрдб рдХрд╛ рдореВрд▓реНрдп рдХреНрдпрд╛ рд╣реИред рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬрд╝ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ @cztomsik рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:

onchange="angular.element(this).scope().fileChangedHandler()"

рдФрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

ng-change , рдЕрдиреНрдп рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рдорд╛рди рдирд╛рдорд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ change рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл ngModelController рдореЗрдВ рдПрдХ $viewChangeListener рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ $setViewValue рдХрд╣реЗ рдЬрд╛рдиреЗ рдкрд░ рдЯреНрд░рд┐рдЧрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдБ рдХрд┐ рдпрд╣ рдПрдХ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдирд╛рдо рд╣реИ

рдпрд╣ #1236 рдХрд╛ рдПрдХ рдбреБрдкреНрд▓реА рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: https://github.com/angular/angular.js/issues/1236#issuecomment -29115377

рдЬрдм рддрдХ рд╣рдо рдЗрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╣рд▓реНрдХрд╛ рд╣реЛ, рдлрд┐рд░ рднреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реЛ рдФрд░ рдлреНрд░реЗрдорд╡реЙрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ ux рд╢реИрд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЕрднреА, рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЗрддрдиреА рдЬрдЯрд┐рд▓ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдПрдХ рд╕рдореБрджреНрд░реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдВрднрд╡рддрдГ рдХреЛрд░ рдХреЗ рдмрд╛рд╣рд░ред

+1

@IgorMinar рдпрд╣рд╛рдВ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдереЛрдбрд╝рд╛ рдЧрдВрджрд╛, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг: https://github.com/danialfarid/angular-file-uploadред @danialfarid рдЗрд╕рдореЗрдВ рдХрд╛рдлреА рдкреНрд░рдЧрддрд┐ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреИрд╕реЗ рд╣реИ, рдХрдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдореБрджреНрджреЗ рдЦреБрд▓ рдЧрдПред рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ ngUpload рдореЙрдбреНрдпреВрд▓ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рдореБрд╕реНрдХрд╛рди:ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ html5 рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills#file -api рд╕реЗ http://docs.angularjs.org/guide рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдк рдХреИрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ?

+1

+1

+1

+1

+1

+1

+1

+1

рд╡рд╛рд╣, рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдпрд╣ рдереЛрдбрд╝рд╛ рд╢рд░реНрдордирд╛рдХ рд╣реИред

+1

рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП 2-рд╡реЗ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реЛрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрдм рд▓рдХреНрд╖реНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рднреА рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ (http://caniuse.com/fileapi) рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ --- рд▓реЗрдХрд┐рди рдЬрдм рднреА рд╡реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, input[type=file] рд╡реИрд╕реЗ рднреА рдЙрд╕рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рдмреИрдарддрд╛ред рджреЛрддрд░рдлрд╛ рдмрдВрдзрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╕рдВрднрд╡ рд╣реИ

рдореБрдЭреЗ рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╡реЗрдм рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рд╕рдорд╕реНрдпрд╛/рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдпрджрд┐ рдпрд╣ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрддрд╛, рддреЛ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛

@caitp рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд╣реА рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди "рдпрд╣ рд╡реЗрдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛/рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдФрд░ рд╣реИ" рдПрдХ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдмрдпрд╛рди рд╣реИред рдЪреМрдЦрдЯреЗ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреА рдХрдорд┐рдпреЛрдВ, рд╡реЗрдм рдХрд▓реНрдкрдирд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЛ рд╕реБрдЧрдо рдмрдирд╛рдирд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдлрд╛рдЗрд▓рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЕрдм рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдХреНрдпреЛрдВ рди рдореЛрдбрд╝реЗрдВ?

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд░реИрдкрд░ рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рдХреБрдЫ рдПрдХ рд╢реБрд░реБрдЖрдд рд╣реЛрдЧреАред

рдЗрд╕ рджрд┐рд╢рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдХреЛрдгреАрдп 2.0 рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ (рдХреЗрд╡рд▓ рдХреЛрдгреАрдп, рдЧреИрд░-рдИрд╕реАрдПрдордП рдореБрд╣рд╛рд╡рд░реЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛), рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ "рд╡реЗрдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо" рдХреА рд╕реАрдорд╛рдПрдВ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@ рдмрд╛рдХреА рд╕рднреА: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдореНрдмрд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдкрд╛рд░рджрд░реНрд╢реА рдмрдпрд╛рди рд╕реЗ "рдЖрд╡рд╢реНрдпрдХ" рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред

_рдмрд╕ рдПрдХ рддреНрд╡рд░рд┐рдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг._ рдХреЛрдгреАрдп 2.0 рдРрдкреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд░рджрд░реНрд╢реА рднрд╛рд╖рд╛ рдпрд╛ рдЧреИрд░-рдИрд╕реАрдПрдордП рдореБрд╣рд╛рд╡рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЖрдк рд╕рд╛рджреЗ ES5 рдХреЛрдб рдХрд╛ рдареАрдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреЛрдгреАрдп 2.0 рд╕реНрд░реЛрдд рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдРрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реАрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдПрдВрдЧреБрд▓рд░ рдХреЗ рдЕрдВрджрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рд╣рдорд╛рд░реА рдШреЛрд╖рдгрд╛рдУрдВ рдореЗрдВ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХреБрдЫ рднреНрд░рдо рд╣реБрдЖ рд╣реЛред

@EisenbergEffect рдореЗрд░рд╛ рдмреБрд░рд╛ред рдореИрдВ рдпрд╣ рдЬрд╛рдирддрд╛ рдерд╛ рдФрд░ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдкреНрд░реВрдлрд░реАрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдХреЙрдлреА рдирд╣реАрдВ!

рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗрдм рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗред рдЬреИрд╕реЗ, рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдИрдбреАрдПрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП 2-рддрд░рдлрд╛ рдмрдВрдзрди рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ) рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк

@caitp рдореИрдВ

рд╢рд╛рдпрдж рд╣рдо рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреЛ "рдХреЛрдгреАрдп рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?" рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, "рдпрд╣ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдкреИрдЯрд░реНрди рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред"

рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ AngularJS рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИред

рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рджреЛ-рддрд░рдлрд╛ рдмрд╛рдзреНрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд▓реЗрдЦрдХ рдХрднреА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдкрде рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ рди рдХреЗрд╡рд▓ рдПрдХ рддрд░рдлрд╛ рдЗрд╕реЗ рдмрд╛рдВрдзреЗрдВ?

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдкреНрд░рддрд┐рдорд╛рди рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдирдЬреА-рдкрд░рд┐рд╡рд░реНрддрди рдФрд░ рд╣реИрдХ рдХреЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд┐рд▓рддреА рд╣реИ? jQuery рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдкрд░ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛ рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдХреЛрдгреАрдп рддрд░реАрдХрд╛ рдЗрддрдирд╛ рдкрд╡рд┐рддреНрд░ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рднреАрддрд░ рд╣реА рдмрд╛рдВрдз рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдПрдХ рддрдХрдиреАрдХреА рд╕реАрдорд╛ рд╣реИ рдпрд╛ рд╕рд┐рд░реНрдл рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рдмрд╛рдзрд╛ рд╣реИ?

рд╕рд╣рдордд, рдореИрдВ 2 рддрд░рд╣ рд╕реЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕реЗ рдХрдо рдЪрд┐рдВрддрд┐рдд рдерд╛ред рдореИрдВ рдмрд╕ рд╣реБрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреВрджреЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рд╢реЗрд╖ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

20 рдордИ, 2014, рдкрд░ 7:53 AM рдкрд░, рдЬрд╕реНрдЯрд┐рди Arruda < [email protected] [email protected] > рдиреЗ рд▓рд┐рдЦрд╛:

@c aitphttps://github.com/caitp рдореИрдВ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╕рдордп рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ рдЪрдпрди рдЗрдирдкреБрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдЗрдЪреНрдЫрд╛ рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ (рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ), рдПрдХ рддреБрдЪреНрдЫ рдРрдк рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЬреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХреНрд╕рдПрдЪрдЖрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдВрдЧреБрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреИрдЯрд░реНрди рдирд╣реАрдВ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, "рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рджреЛ-рддрд░рдлрд╛ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдпрд╣рд╛рдВ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред"

рд╢рд╛рдпрдж рд╣рдо рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреЛ "рдХреЛрдгреАрдп рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?" рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, "рдпрд╣ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдкреИрдЯрд░реНрди рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред"

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ Gi tHubhttps: //github.com/angular/angular.js/issues/1375#issuecomment -43636326 рдкрд░ рджреЗрдЦреЗрдВред

рдлрд┐рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдирдЬреА-рдореЙрдбрд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдмреЗрддрд╣рд╛рд╢рд╛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрдЧ рджрд╛рдЦрд┐рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреИрд╕реЗ "рдЬрдм рдореИрдВ "foobarblah.txt" рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдорд╛рди рдмрджрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдлреЙрд░реНрдо рдирд┐рдпрдВрддреНрд░рдг рдЧрд▓рдд рдлрд╝рд╛рдЗрд▓ рдХреИрд╕реЗ рднреЗрдЬрддрд╛ рд╣реИред рдЕрд╕рдВрдЧрдд рдПрдкреАрдЖрдИ -> рдЦрд░рд╛рдмред

ngModel рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрд┐рдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рд╣реИ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЗрдЦрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП angular.dart рдФрд░ v2.0.0 рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдФрд░ рдПрдирдЬреА-рдореЙрдбрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдирдЬреА-рдореЙрдбрд▓ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддрд╛ рд╣реИ рдЙрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛

рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдВрдЧреБрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕рдПрдЪрдЖрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░рддрд╛ рд╣реИ

@guruward рд╣рдо рд▓реЛрдЧреЛрдВ рдХреЛ рд╢реЙрдХрд╡реЗрд╡ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдП рдмрд┐рдирд╛ 1.x рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рднреА рд▓рдХреНрд╖рд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдореЙрдбреНрдпреВрд▓ рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдгреАрдп-рдлрд╝рд╛рдЗрд▓-рдЕрдкрд▓реЛрдб рд╢реЙрдХрд╡реЗрд╡ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдФрд░ html5 рджреЗрд╢реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд╢рд┐рдк рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рд╣реА рдХреЛ рдЪреБрдирддрд╛ рд╣реИред рддреЛ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХреЛрд░ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЗрдЧреЛрд░ рд╕реЗ рдкреВрдЫрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдХреЛрд░ рдореЗрдВ рд╢реЙрдХрд╡реЗрд╡ рдкреЙрд▓реАрдлрд┐рд▓ рд╢рд┐рдкрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддрд╛ рд╣реИред

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд┐рд╕реЗ рд▓реЛрдЧ рдХрднреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ ngModel рдкреИрдЯрд░реНрди рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд cruft рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╕рднреА рд▓рдХреНрд╖рд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдврд╛рдВрдЪреЗ рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдерд░реНрдб рдкрд╛рд░реНрдЯреА рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреНрдпрд╛ рд╣рд░реНрдЬ рд╣реИ?

рдЗрд╕ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХреЛ рдлрд╝реНрд▓реИрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

@jreading рдпрд╣ рдПрдХ

рдпрд╣ рдЬреЛ рдХрд░ рд░рд╣рд╛ рд╣реИ рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ, рдЬреЛ рд╕рднреА рд▓рдХреНрд╖рд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдХреЛрдгреАрдп 1.x рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИред

рдЙрд╕ рдПрдкреАрдЖрдИ рдХреЗ рдмрд┐рдирд╛, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╢реЙрдХрд╡реЗрд╡ рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рдлрд╝рд╛рдЗрд▓ рдмреНрд▓реЙрдм рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рдлреНрд▓реИрд╢ рдХреЗ рдмрдЬрд╛рдп iframes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╣ ред рд╢рдмреНрджрд╛рд░реНрде рдкрд░ рдмрд╣рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд░реЛрдбрдореИрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЖрдЗрдП рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕рдХреНрд╖рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдкрд░ рдПрдирдЬреА-рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВред

@jreading рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдЙрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдкреАрдЖрдИ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ

рдЗрд╕рдХреЗ рд▓рд┐рдП рддреГрддреАрдп-рдкрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдпрджрд┐ рд╡реЗ рдЙрдкрдпреБрдХреНрдд рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреМрди рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдХреЛрд░ рдП рдореЗрдВ рд░рдЦрдирд╛) рдЙрди рддреГрддреАрдп-рдкрдХреНрд╖ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрдард┐рди рд╕рдордп рджреЗрддрд╛ рд╣реИ, рдФрд░ рдмреА) рд╕рднреА рд▓рдХреНрд╖рд┐рдд рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░реА рд░рд╛рдп рд╣реИ, рд╢рд╛рдпрдж рдЗрдЧреЛрд░ рдпрд╛ рдХреЛрдИ рдФрд░ рдЕрд╕рд╣рдордд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред

рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рд╣реИ рдпрджрд┐ рд╡реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рдпрд╣ рдирд┐рд╣рд┐рдд рдирд╣реАрдВ рдерд╛ рдХрд┐ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд▓реЙрдм рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдПрдХ рдЕрдВрдЧ рдкрд░ рдмрд╛рд╣рд░ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдЬреЛ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХрдм рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЖрд░рд╛рдо рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдЖрдИрдлреНрд░реЗрдо рд╕рдорд╛рдзрд╛рди рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рдФрд░ рдХреЛрдгреАрдп рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИ рднрд╛рдбрд╝реЗред

рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрд░реЗ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ (рдЖрдкрдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдкрд▓реЛрдб рдирд╣реАрдВ !!) рдХреА рддрд░рд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдпрд╛ рдЖрдХреНрд░рд╛рдордХ рд╕рдВрд╡рд░реНрджреНрдзрди рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рд╕рд╡рд╛рд▓ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ "рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдПрдкреАрдЖрдИ рд╣реЛрдиреЗ рдореЗрдВ рдХреНрдпрд╛ рдиреБрдХрд╕рд╛рди рд╣реИ?"

"рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдПрдкреАрдЖрдИ рд╣реЛрдиреЗ рдореЗрдВ рдХреНрдпрд╛ рдмреБрд░рд╛рдИ рд╣реИ?"

рдпрд╣ рддрд░реНрдХ рдХрдордЬреЛрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрд╡рд╕рд░ рд▓рд╛рдЧрдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ; рд╣рдорд╛рд░реЗ (рдХреЛрд░ рдЯреАрдо рдХреЛ) рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рднреА рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВред

рдХрд╛рдлреА рдЙрдЪрд┐рддред рдмрд╕ рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рдФрд░ рдХрдо рд▓рдЯрдХреЗ рдлрд▓ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдореБрджреНрджрд╛ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо ngModel рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ngModel рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рд╕реЗ рдлрд╝рд╛рдЗрд▓рд▓рд┐рд╕реНрдЯ рдХреЛ рджрд╛рдпрд░реЗ рдореЗрдВ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рджрд┐рд╢рд╛ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдореЙрдбрд▓ рдХреЛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд/рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗред рдкрд╛рд░реНрд╕рд░реНрд╕/рдлреЙрд░реНрдореЗрдЯрд░ рд╢рд╛рдпрдж рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдлрд╝рд╛рдЗрд▓ рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдЬреИрд╕реЗ рд╕рд╛рдзрд╛рд░рдг рд╕рд╛рдорд╛рди рдХрд░реЗрдВрдЧреЗред

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕рдорд░реНрдерди рдХреЗ рдмрд┐рдирд╛ рдпрд╣ рдареАрдХ рд╕реЗ рдХрд░рдирд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╖рдореНрдп рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реА рдмреЗрд╕рд▓рд╛рдЗрди рдЖрдИрдИ 9 рд╣реИ рдФрд░ рдЗрд╕ рд╕рд╛рдорд╛рди рдХреЛ рдкреЙрд▓реАрдлрд┐рд▓ рдХрд░рдирд╛ рдХреЛрд░ рдХреЗ рд▓рд┐рдП рд╕рд╡рд╛рд▓ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрд╕ рдЗрдирдкреБрдЯ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЬреЛ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рддреГрддреАрдп рдкрдХреНрд╖ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдм рдореВрд▓ рд╕рдорд╛рдзрд╛рди рд╕реЗ рд▓рдбрд╝рдирд╛/рдЕрдХреНрд╖рдо/рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред

рдЧреИрд░-рдкреНрд░рдореБрдЦ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкрд┐рдЫрд▓реЗ рдЕрдВрдХ рдореЗрдВ рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛

рдХрдИ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдмрдбрд╝рд╛ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдпрд╣ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИрдВ?

рдХреНрдпрд╛ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдбрд╛рд▓реА рдЬрд╛ рд░рд╣реА рдХреБрдЫ рдКрд░реНрдЬрд╛ рдХреЛ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдирдпрд╛ рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЬреЛ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛ?

рдЬреИрд╕реЗ рд╣реА рд╣рдордиреЗ #1236 рдХреЛ рдмрдВрдж рдХрд┐рдпрд╛, рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдгреАрдп 2 рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рд╕рдорд░реНрдерди рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рдореИрдВ рдмрд╕ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШрдЯрдирд╛ рдХрдм рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реАрдзреЗ рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ AJAJ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@bjoshuanoah рддреЛ рдЖрдкрдХреЛ ngModel рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдмрд╕ рдПрдХ рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рдЗрдирдкреБрдЯ = p . рд╕реЗ рдмрд╛рдВрдзреЗрдВ

@caitp рдореИрдВ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╕рдмрдХреБрдЫ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдирд╣реАрдВред

рдЕрдЧрд░ рдореИрдВ ng-change="uploadFile({$event: $event})" рдбрд╛рд▓рддрд╛ рд╣реВрдВ

рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ $scope.uploadFile(event) рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╡рд╣рд╛рдВ рд╕рдВрднрд╛рд▓реЛред

рдореЗрд░рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдпрд╣ рд╣реИ: рдлрд╝рд╛рдЗрд▓ рдХреЛ s3 рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдореЗрд░реЗ рдореЙрдбрд▓ рдкрд░ url рд▓рд╛рдЧреВ рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореБрдЭреЗ рд╡рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рддреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдмрд╣реБрдд рдХрд╖реНрдЯрдкреНрд░рдж:

<input name="highRes" scope="{{contentOptions.currentValue}}" key="value" type="file" onchange="angular.element(this).scope().setFile(this)">

рдХрд╛рд╢ рдХреЛрдИ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдорд╛рд░ рджреЗрддрд╛ред рддреЛ рд╣рдо рд╕рдм рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ :)

рдЬреБрд▓рд╛ 25, 2014, рдкрд░ 9:22 рдмрдЬреЗ, рдмреНрд░рд╛рдпрди рдкрд░ < [email protected] [email protected] > рдиреЗ рд▓рд┐рдЦрд╛:

рдореИрдВ рдмрд╕ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдШрдЯрдирд╛ рдХрдм рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реАрдзреЗ рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ AJAJ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

-
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ Gi tHubhttps: //github.com/angular/angular.js/issues/1375#issuecomment -50171714 рдкрд░ рджреЗрдЦреЗрдВред

+1

+1

+1000000000000000

+1

+1

+1

+1

+100500

+1
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЬрд╛рдХреНрд╕ рдПрдХ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рд╣реИред рдХреЛрдИ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдПрдХ csv рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдХреЛрдгреАрдп рдореЙрдбрд▓ рдореЗрдВ рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдПрдирдЬреА-рдЪреЗрдВрдЬ рдиреЗ рдПрдВрдЧреБрд▓рд░ рдХреЗ рднреАрддрд░ рдлрд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛ рддреЛ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╣реИ ред рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рдЕрдЬрд╛рдХреНрд╕ рдпрд╛ рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ?

рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд░рдирд╛ рд╣реИ:

 input(type="file", onchange="angular.element(this).scope().onFileSet(this.files)")

рдФрд░ рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдмрд╕ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ

$scope.onFileSet = function(files) { 
// work your magic here 
}

рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдмрджрдмреВ рдЖ рд░рд╣реА рд╣реИ, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдгреАрдп рдХреЛ рдХрдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдХреЛрдгреАрдп рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд░реЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред

:рджрд┐рд▓ рджрд┐рд▓:

рдпрд╣рд╛рдБ рдПрдХ рд╕реЗрд▓рдмреЛрдЯ рд╣реИ: рд╕реЗрд▓рдмреЛрдЯ:

рдбрд┐рдмрдЧ рдореЛрдб рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ @samccone рд╕реНрдХреЛрдк () рдЕрдиреБрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ?

@geetsce рдпрд╣ рд╕рд╣реА рд╣реИ (1.3.x рдФрд░ рдмрд╛рдж рдореЗрдВ)

рд╡реЗрд▓рдк, 1.2 рд▓реИрдВрдб рдореЗрдВ рд╕рдм рдареАрдХ рд╣реИред

@Narretz рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ?

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣ https://jasonturim.wordpress.com/2013/09/01/angularjs-drag-and-drop рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ

<input type="file" multiple="multiple" data-dbinf-on-files-selected="chooseAFunctionName(selectedFileList)">
<script>
/**Directive to propagate selected files from an HTML input element with type="file"
 * to the surrounding AngularJS controller.
 */
myApp.directive('dbinfOnFilesSelected', [function() {
    return {
        restrict: 'A',
        scope: {
              //attribute data-dbinf-on-files-selected (normalized to dbinfOnFilesSelected) identifies the action
              //to take when file(s) are selected. The '&' says to  execute the expression for attribute
              //data-dbinf-on-files-selected in the context of the parent scope. Note though that this '&'
              //concerns visibility of the properties and functions of the parent scope, it does not
              //fire the parent scope's $digest (dirty checking): use $scope.$apply() to update views
              //(calling scope.$apply() here in the directive had no visible effect for me).
            dbinfOnFilesSelected: '&'
        },
        link: function(scope, element, attr, ctrl) {
            element.bind("change", function()
            {  //match the selected files to the name 'selectedFileList', and
               //execute the code in the data-dbinf-on-files-selected attribute
             scope.dbinfOnFilesSelected({selectedFileList : element[0].files});
            });
        }
    }
}]);

myApp.controller('myController', ['$scope', function($scope) {
    $scope.chooseAFunctionName = function (filelist) {
        for (var i = 0; i < filelist.length; ++i) {
            var file = filelist.item(i);
            //do something with file; remember to call $scope.$apply() to trigger $digest (dirty checking)
            alert(file.name);
           }
    };
}]);
</script>

+1

+1

рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛... рдЬрд╛рдиреЗ рджреЛ, рдЬрд╛рдиреЗ рджреЛ...

+1

рдЬреИрд╕рд╛ рдХрд┐ @samccone рдиреЗ рдХрд╣рд╛,

input(type="file", onchange="angular.element(this).scope().onFileSet(this.files)")

рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдгреАрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЕрдЬреАрдм рд╣реИред

+1

+1

+1

рдЕрд░реЗ @caitp @Narretz рдЕрдЧрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ 1.2x рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреАрдЖрд░ рддреИрдпрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдпрд╣ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рдореИрдВ рд╕реБрд░рдХреНрд╖рд╛ рдЪрд┐рдВрддрд╛рдУрдВ рдФрд░ рдХреНрд░реЙрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХреА рдХрдореА рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдЗрдирдкреБрдЯ рдХрдм рдмрджрд▓ рдЧрдпрд╛ рд╣реИ (рдореВрд▓ рдШрдЯрдирд╛ рдореЗрдВ рдЧреБрдЬрд░рдирд╛) рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рд▓реЛрдЧ рдЕрдкрдирд╛ рдЬрд╛рджреВ рдЪрд▓рд╛ рд╕рдХреЗрдВред

рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж :palm_tree:

+1

+1

+1

+1

+1

рдПрдирдЬреА-рдлрд╛рдЗрд▓-рдЕрдкрд▓реЛрдб рдмрдврд╝рд┐рдпрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

@neokyol рдХреЗ рд▓рд┐рдП +1 !! рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╕реБрд╡рд┐рдзрд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП

рдЙрдкрдпреЛрдЧреА

+1

+1

+1

+1

+1

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ

angular.module('app', [])
  .controller('MainCtrl', MainCtrl)
  .directive('fileChange', fileChange);

  function MainCtrl($scope) {
    $scope.upload = function () {
      // do something with the file
      alert($scope.file.name);
    };
  }

  function fileChange() {
    return {
      restrict: 'A',
      require: 'ngModel',
      scope: {
        fileChange: '&'
      },
      link: function link(scope, element, attrs, ctrl) {
        element.on('change', onChange);

        scope.$on('destroy', function () {
          element.off('change', onChange);
        });

        function onChange() {
          ctrl.$setViewValue(element[0].files[0]);
          scope.fileChange();
        }
      }
    };
  }
<div ng-app="app" ng-controller="MainCtrl">
  <input type="file" file-change="upload()" ng-model="file">
</div>

http://plnkr.co/edit/JYX3Pcq18gH3ol5XSizw?p=preview

+1

+1

+1

+1

+1000000000000000000000000

+1

+1

@dciccale рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдкреНрд▓рдВрдХрд░ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

+1

+1

+1 рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХрд╛рдлреА рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ

+1

+1
рдХреНрдпрд╛ рдлреАрдЪрд░ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ?

+1

+1

рдпрд╣ рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреИрд╕реЗ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ $ рд╕реНрдХреЛрдк рдХрднреА рдЗрдВрдЬреЗрдХреНрд╢рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВ рд▓рд╛рд░реНрд╡рд╛ рдХреЛрдгреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЬреАрдпреВрдПрд▓рдкреА рдФрд░ рдИрдПрд╕ 6 рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЕрд░реНрдерд╛рдд

class TestController{
    constructor(API){
        'ngInject';
        this.API = API
    }

    $onInit(){
        this.file = null;
    }
    upload() {
        console.log(this.file)
    }
    fileChanged(elm) {
        console.log('hey')
        this.file = elm.file;
        this.$apply();
    }
}

export const TestComponent = {
    templateUrl: './views/app/components/test/test.component.html',
    controller: TestController,
    controllerAs: 'vm',
    bindings: {}
}

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдПрдХ рдХрд╛рдордХрд╛рдЬ рдорд┐рд▓рд╛ рд╣реИред http://stackoverflow.com/questions/38449126/how-to-set-up-ng-file-upload-in-laravel-angular-project/38486379#38486379

+1

@ntrp @guruward @coli @lgersman @jgoldber @Siyfion
рдЖрдкрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛?
рдореЗрд░рд╛ рд╕рддреНрдпрд╛рдкрди:
this.catalougeForm = this.catalougeFormBuilder.group({
CatalougeIconName: ['',Validators.required]
});
рдПрдЪрдЯреАрдПрдордПрд▓:
(рдмрджрд▓реЗрдВ) = "рдЪреЗрдВрдЬ рд▓рд┐рд╕реНрдЯрдирд░($рдИрд╡реЗрдВрдЯ)">

рдореЗрд░рд╛ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдореЗрд░реЗ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж catalougeIconName рдорд╛рди рдХреЛ рдЦрд╛рд▓реА/рд╢реВрдиреНрдп рдорд╛рди рд░рд╣рд╛ рд╣реИред
рдЫрд╡рд┐ рднреЗрдЬреА рдЬрд╛ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рдХреЛрдИ рдЕрдкрдбреЗрдЯреНрд╕ ?

рджреЗрдЦреЗрдВ https://github.com/angular/angular.js/issues/1375#issuecomment -43820650

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jpsimons picture jpsimons  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gkalpak picture gkalpak  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ceymard picture ceymard  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tdumitrescu picture tdumitrescu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kishanmundha picture kishanmundha  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ