How do I use $scope.$watch and $scope.$apply in AngularJS?

前端 未结 6 2023
栀梦
栀梦 2020-11-21 15:36

I don\'t understand how to use $scope.$watch and $scope.$apply. The official documentation isn\'t helpful.

What I don\'t understand specifi

6条回答
  •  孤独总比滥情好
    2020-11-21 16:20

    Just finish reading ALL the above, boring and sleepy (sorry but is true). Very technical, in-depth, detailed, and dry. Why am I writing? Because AngularJS is massive, lots of inter-connected concepts can turn anyone going nuts. I often asked myself, am I not smart enough to understand them? No! It's because so few can explain the tech in a for-dummie language w/o all the terminologies! Okay, let me try:

    1) They are all event-driven things. (I hear the laugh, but read on)

    If you don't know what event-driven is Then think you place a button on the page, hook it up w/ a function using "on-click", waiting for users to click on it to trigger the actions you plant inside the function. Or think of "trigger" of SQL Server / Oracle.

    2) $watch is "on-click".

    What's special about is it takes 2 functions as parameters, first one gives the value from the event, second one takes the value into consideration...

    3) $digest is the boss who checks around tirelessly, bla-bla-bla but a good boss.

    4) $apply gives you the way when you want to do it manually, like a fail-proof (in case on-click doesn't kick in, you force it to run.)

    Now, let's make it visual. Picture this to make it even more easy to grab the idea:

    In a restaurant,

    - WAITERS

    are supposed to take orders from customers, this is

    $watch(
      function(){return orders;},
      function(){Kitchen make it;}
    );
    

    - MANAGER running around to make sure all waiters are awake, responsive to any sign of changes from customers. This is $digest()

    - OWNER has the ultimate power to drive everyone upon request, this is $apply()

提交回复
热议问题