ערכתי לאחרונה בתאריך 29.01.16 בשעה 13:07 בברכה, aCoZz
מה שקורה פה זה דבר כזה
בגרסאות הראשונות לא היית יכול לשים
ng-controller="TasksIndexController as ctrl"הייתה צריך לשים
ng-controller="TasksIndexController"
עכשיו יש פה בעיה !
אם אתה מכונן קונטרולרים
אתה יוצר ירושה ,קונטרולר "בן" יורש מקונטרולר "אבא"
עכשיו מה שקורה פה זה דבר כזה נגיד יש לך בקונטרולר אבא משתנה על הסקופ נגיד NAME
כלומר $scope.NAME
ואתה רוצה להשתמש ב NAME בקונטרולר בן
אז יש ירושה.. אבל אסור להתבלבל כי ב JS זאת לא ירושה רגילה מדובר פה ב prototype inheritance
אם שינת את המשתנה NAME מהאבא הכל טוב ויפה כי הבן מחפש בסקופ שלו את NAME ולא מוצא אז הוא עובר לחפש באבא ומוצא
אבל !!!
אם שינת את המשתנה NAME מהקונטרולר בן הוא יוצר את המשתנה על האינסטנס כלומר הסקופ שלו ואז אנחנו מאבדים סינכרון !
כי מדובר VALUE TYPE ברגע ששינו VALUE TYPE אנחנו כבר לא מדברים על אותו משתנה !
איך פותרים את זה ?
שמים באבא OBJECT TYPE לדוגמא VM ושמים עליו ועליו שמים NAME
ואז בתוך הבן אנחנו גורמים לשינוי של ה VM ולא המשתנים בסקופ
מה שקורה פה בגלל שאנחנו לא משנים את הפוינטר לאוביקט VM אנחנו מדברים על אותו אוביקט תמיד !
וככה פותרים את בעיית הסנכרון.
לסיכום במקום שכל פעם תיצור אוביקט בתוך הסקופ שלך אנגולר הוסיפו
CONTROLLER AS
והם יוצרים לך את ההאוביקט VM מאחורי הקלעים