Angular.js: рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд╛рдпрд░реЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдЕрдкрдбреЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдСрдирдЪреЗрдВрдЬ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЕрдХреНрддреВре░ 2013  ┬╖  11рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: angular/angular.js

рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдХреЛрдк рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдСрдирдЪреЗрдВрдЬ рдЗрд╡реЗрдВрдЯ рдХреЛ рдореЙрдбрд▓ рдЕрдкрдбреЗрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг:

<!doctype html>
<html ng-app="App">
    <head>

        <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.js"></script>
        <script src="http://code.angularjs.org/1.0.6/angular.js"></script>
        <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>

        <script type="text/javascript">
            "use strict"

            var App = angular.module('App', []);
            App.controller('Ctrl', function ($scope,$timeout) {

                $scope.change1 = function () {
                    console.warn("inside change", $scope.y);
                }

                $scope.change2 = function () {
                    console.warn("inside change", $scope.x);    
                }

            });

            App.directive("wminput", function () {
                return {
                    restrict: "E",
                    replace: true,
                    scope: {
                        "onChange":"&",
                        "value": "="
                    },
                    template: '<input type="text" data-ng-model="value" data-ng-change="onChange();">'
                }
            });

        </script>

    </head>
    <body>
        <div data-ng-controller="Ctrl">
            "Onchange will be triggered after the model update"
            <input data-ng-change="change1()" data-ng-model="y">
            <br><br>
            "Onchange will be triggered before the model update"
            <wminput on-change="change2()" value="x"></wminput>
        </div>

    </body>
</html>
$compile forms low works as expected confusing bug

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

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

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

рджрд┐рд▓рдЪрд╕реНрдк рдХреЛрдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ ... http://plnkr.co/edit/lsrga8qMcbgNWATrVht3?p=preview

рдпрд╣ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдСрди-рдЪреЗрдВрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреИрд░реЗрдВрдЯ рд╕реНрдХреЛрдк рдЪреМрдбрд╝рд╛рдИ 'рдПрдВрдб' рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдореЗрдВ рдбреЗрд▓рд┐рдЧреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдо angularjs рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ RAD рдЯреВрд▓ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдпрд╣ рдПрдХ рдкреНрд░рдореБрдЦ рдмрдЧ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрд╡реЗрджрди рдореЗрдВ рд╣рд░ рд╡рд┐рдЬреЗрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рдордиреЗ onChange рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╡рд┐рдзрд┐ рдмрдирд╛рдХрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИред

рдПрдХ рдирдЬрд░: https://studio.wavemaker.com/

рд╡рд┐рдирдп, рд╡рд┐рдирдп

рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдпрд╣ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: http://plnkr.co/edit/Xe6ErQrg7WL6aAIoM9Gd?p=preview

рдХреНрдпрд╛ рдЗрд╕реЗ рдХрднреА рднреА рдЬрд▓реНрдж рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдпрд╣ sooooo рднреНрд░рд╛рдордХ рд╣реИред

рдЖрдЧреЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ .. plnkr рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, ngModel рдХрд╛ рдорд╛рди рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдирд┐рд░реНрджреЗрд╢ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмреАрдЪ рджреЛ рдмрд╛рдзреНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИред рдЕрдм рдЬрдм рдЖрдк рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдорд╛рди рдмрджрд▓ рд░рд╣реЗ рд╣реИрдВ, рддреЛ ngModel рдкрд╣рд▓реЗ _isolate_ рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛, рдФрд░ рдЙрд╕реА рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рдореЗрдВ ngChange рдХреЛ рдЖрдЧ рджреЗрдЧрд╛ред рдЪреВрдВрдХрд┐ рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдиреЗ рдЕрднреА рддрдХ рдирд┐рд░реНрджреЗрд╢рдХреАрдп рджрд╛рдпрд░реЗ рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреЗрд░реЗрдВрдЯ рд╕реНрдХреЛрдк рдореЗрдВ ngChange рдХреЛ x рдХрд╛ "рдкреБрд░рд╛рдирд╛" рдорд╛рди рдорд┐рд▓рддрд╛ рд╣реИред рдЕрдм рджреЛ-рддрд░рдлрд╝рд╛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╡реЙрдЪрд░ рдХреЛ рдореВрд▓реНрдп рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рджреЛ рдбрд╛рдЗрдЬреЗрд╕реНрдЯ рд╕рд╛рдЗрдХрд┐рд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рджрд╛рдпрд░реЗ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдПрдирдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рднреНрд░рд╛рдордХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢ рдкрд░ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдмрд╛рдВрдзрдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рди рдХреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд░рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк ngModel рд╕реЗ рдмрд╛рдВрдзрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣, рдорд╛рди рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХ рджрд╛рдпрд░реЗ рджреЛрдиреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ рдЬрдм ngChange рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: http://plnkr.co/edit/fs7S6yX1a5aeo1Esex22?p=preview

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

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

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ $timeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдлрд┐рд░ рднреА рдЙрд▓рдЭрди рдореЗрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рдЬрд░реВрд░рдд рдХреНрдпреЛрдВ рд╣реИред

рдЙрджрд╛рд╣рд░рдг:
http://codepen.io/jakobadam/pen/qmBdrJ?editors=1010

рд╕рд╛рджрд░, рдЬреИрдХрдм

рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдлрд┐рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рд╣реИ? рд╢рд╛рдпрдж рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛?

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рднрд╛рдЧ рдЧрдпрд╛ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВ, рдЬрдмрдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд╛рдпрд░реЗ рдХреЗ рдХрд╛рд░рдг рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ; рдЬрдм рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдСрди-рдХреЙрд▓ рдХреЙрд▓ рдХреА рдЖрдЧ рд╕реЗ рдПрдХ рдЕрджреНрдпрддрди рдореЙрдбрд▓ рдХреА рдЙрдореНрдореАрдж рд╕реЗ рдЖрддрд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЙрдбрд▓ рдХреЛ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рд╡рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдк рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ рд╕рд╡рд╛рд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╣реЛрдирд╛ рд╣реИ?

рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ред рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдХрдИ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╣реИред рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЕрдм (a) рдПрдХ рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬ рд╣реЛрдЧрд╛ рдФрд░ (b) рдХрдИ рдпреВрдЬреЗрд╕ рдХреЛ рдЕрд╕рдорд░реНрдерд┐рдд рдХрд░ рджреЗрдЧрд╛ (рдЬреИрд╕реЗ рдХрд┐ рдЬрд╣рд╛рдБ рдЖрдк рдореВрд▓реНрдп #before_ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ngChange рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдкреИрд░реЗрдВрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рд╕рднреА рдХреЛ рдЦреБрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рд╣реЛрдЧрд╛:

  • рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
  • рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝рддрд╛ рд╣реИред
  • рдереЛрдбрд╝рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреА рд▓рд╛рдЧрдд рдкрд░ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ), рднрд▓реЗ рд╣реА рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ / рдЙрдиреНрдирдд usecases рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдХрд╛ рд╡рд░реНрддрдорд╛рди рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди ngChange рдХрд╕рдХрд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рд╣реИ ngModel ред рдбрд╛рдпрд░реЗрдХреНрдЯрд┐рд╡ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИред рджреЛрдиреЛрдВ рдПрдХ рд╕рд╛рде рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди / рдЖрдВрддрд░рд┐рдХ рдХрд╛рдордХрд╛рдЬ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

#

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

  1. рдХреЙрд▓рдмреИрдХ рдкрд░ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрджреНрдпрддрди рдорд╛рди рдкрд╛рд╕ рдХрд░реЗрдВред

  2. рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдпрд╛рдиреА рдкрд╛рдЪрди рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рд╕рднреА рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рддреЛ рдЖрдк рдХреЙрд▓рдмреИрдХ рдХреЗ рдЕрдВрджрд░ рд╣рдореЗрд╢рд╛ $timeout рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

  3. рдпрджрд┐ рдЖрдк ngChange рдХрд╛ "async" рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рддреБрдЪреНрдЫ рд╣реИред (рдЖрдк рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрджреЗрд╢ рдХреЛ рднреА рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред) рдЬреИрд╕реЗред

.directive('myAsyncChange', function($timeout) {
  return {
    restrict: 'A',
    require: 'ngModel',
    link: function(scope, element, attr, ctrl) {
      ctrl.$viewChangeListeners.push(function() {
        $timeout(function() {
          scope.$eval(attr.myAsyncChange);
        });
      });
    }
  };
});
<input ng-model="foo" my-async-change="onChange()" />
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

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

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

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