به صورت کلی با استفاده از watch$ میتوان تمامی تغییراتی را که به خواص ViewModel اعمال میشوند مشاهده کرد.
تعریف کلی آن به صورت زیر است:
»watchExpression : میتوان نام خاصیت مورد نظر در ViewModel یا یک تابع را که قصد مشاهده تغییرات آن را داریم تعیین کنیم.
»Listener : با تغییر در مقدار watchExpression اگر مقدار قبلی این عبارت با مقدار فعلی آن برابر نباشد این تابع فراخوانی میشود.
» objectEquality : به صورت پیش فرض Angular مقادیر مورد نظر برای تغییرات را فقط از نظر Reference Equal بودن چک میکند. اگر بخواهیم که Angular به صورت عمقی و درختی مقادیر ابجکتها را بررسی کند مقدار این پارامتر باید true شود.
تعریف کلی آن به صورت زیر است:
$watch(watchExpression, listener, objectEquality)
»Listener : با تغییر در مقدار watchExpression اگر مقدار قبلی این عبارت با مقدار فعلی آن برابر نباشد این تابع فراخوانی میشود.
» objectEquality : به صورت پیش فرض Angular مقادیر مورد نظر برای تغییرات را فقط از نظر Reference Equal بودن چک میکند. اگر بخواهیم که Angular به صورت عمقی و درختی مقادیر ابجکتها را بررسی کند مقدار این پارامتر باید true شود.
در فریم ورک Angular هر زمان که عمل مقید سازی خواص ViewModel به عناصر DOM
انجام میگیرد در واقع یک نمونه از watch$ به لیستی به نام watch list $
اضافه میشود. دقت کنید که صرفا تعریف در محدوده کنترلر کافی نیست بلکه باید خاصیت مورد نظر حتما مقید شود. برای مثال
app.controller('MainCtrl', function($scope) { $scope.foo = "Foo"; $scope.world = "World"; });
در View نیز
Hello, {{ World }}
در کنترلر بالا دو خاصیت تعریف شده است، در حالی که در View فقط یک خاصیت مقید شده است. درنتیجه فقط یک watch$ به لیست مورد نظر اضافه شده است.
و به عنوان نکته آخر، در Angular نسخه 1.1.4 تابعی به نام watchCollection اضافه شده است که برای ردیابی تغییرات یک مجموعه مورد استفاده قرار میگیرد.
یک مثال در این موردو به عنوان نکته آخر، در Angular نسخه 1.1.4 تابعی به نام watchCollection اضافه شده است که برای ردیابی تغییرات یک مجموعه مورد استفاده قرار میگیرد.