تشخیص تغییر شبکه داده JavaScript

ساخت وبلاگ

این شبکه در تشخیص تغییر ایجاد کرده است. هنگامی که یک مقدار در شبکه تغییر می کند ، از طریق UI یا از طریق شبکه API ، شبکه تمام سلول ها را بررسی می کند تا ببینند کدام یک از آنها فقط به روزرسانی و به روزرسانی می شوند ، بنابراین حداقل تغییراتی در DOM ایجاد می شود.

تشخیص تغییر را می توان به دو دسته زیر تقسیم کرد:

  1. تشخیص تغییر ارزش: هنگامی که یک مقدار برای هر سلول تغییر می کند (به عنوان مثال پس از ویرایش) ، شبکه از هر سلول در شبکه عبور می کند و مقدار فعلی را با مقدار قبلی مقایسه می کند. اگر مقادیر متفاوت باشند ، سلول تازه می شود. این اجازه می دهد تا تمام سلولهایی که از ارزش ها استفاده می کنند به روز نگه داشته شوند که در آن تغییر در یک سلول (که ویرایش شده است) ممکن است بر مقدار سلول دیگر تأثیر بگذارد (که به سلول اول ارجاع می دهد).
  2. تشخیص تغییر تجمع: هنگامی که یک مقدار برای هر سلول تغییر کند ، شبکه تمام تجمع هایی را که تحت تأثیر مقدار تغییر یافته است ، محاسبه می کند. این بدان معنی است که شبکه به طور خودکار نتایج تجمیع (مقادیر موجود در ردیف گروه بندی شده) را به روز نگه می دارد زیرا داده های زیر آن تغییر می کند.

اگر از یک رندر سلول سفارشی استفاده می کنید ، برای اطلاعات بیشتر در مورد نحوه بروزرسانی مؤلفه خود به دنبال تغییر تغییر ، به تازه کردن مؤلفه مراجعه کنید.

مثال: تشخیص و دریافت گیرنده های ارزش را تغییر دهید

مثال زیر تأثیر تشخیص تغییر بر روی گیرنده های ارزش را نشان می دهد. این شبکه تمام تازه سازی را به خودی خود انجام می دهد و بدون نیاز به برنامه مشتری صریح و صریح درخواست تازه سازی می شود. به موارد زیر توجه کنید:

  • ستون "Total" برای محاسبه مجموع مقادیر موجود در آن ردیف از یک گیرنده مقدار استفاده می کند.
  • با کلیک بر روی یک سلول و وارد کردن یک مقدار جدید ، هر یک از مقادیر موجود در ستون های A تا F را ویرایش کنید.
  • ستون "کل" به طور خودکار تازه می شود و چشمک می زند.
// بارگذاری. 

1. تشخیص تغییر ارزش

این شبکه یک نسخه محلی از تمام مقادیر ارائه شده در هر سلول را نگه می دارد. هنگامی که از طراوت سلول درخواست می شود ، در صورت تغییر مقدار ، سلول فقط تازه می شود.

ممکن است بپرسید ، آیا هر سلول را در برابر ارزش آن یک مشکل عملکرد بررسی می کند؟جواب نه. آنچه Ag Grid انجام می دهد شبیه به الگوریتم های تشخیص تغییر در چارچوب ها است. انجام این چک های بسیاری در JavaScript مشکلی نیست. کندی وقتی DOM بارها به روز می شود ، می آید. AG Grid تنها با به روزرسانی DOM در جایی که تغییرات در آن تشخیص داده می شود ، به روزرسانی های DOM را به حداقل می رساند.

مقایسه مقادیر

در این بخش نحوه مقایسه شبکه مقادیر توضیح داده شده است. اگر می خواهید مقادیر را به روشی متفاوت مقایسه کنید ، این مورد علاقه است.

به طور پیش فرض ، شبکه مقادیر را با استفاده از برابر برابر با سه برابر ، به عنوان مثال "oldValue === NewValue" مقایسه می کند. این بیشتر اوقات برای شما کار خواهد کرد ، به خصوص اگر مقادیر شما انواع ساده (رشته ، شماره ، بولی) یا اشیاء تغییر ناپذیر باشد. این یک مشکل برای اشیاء قابل تغییر خواهد بود زیرا از منابع شیء برای مقایسه استفاده می شود که تغییرات داخلی در شی را تشخیص نمی دهد. در صورت استفاده از اشیاء قابل تغییر (داده ها تغییر کرده است اما همان مرجع شیء است) ، پس باید نحوه مقایسه ارزش را نادیده بگیرید.

اگر ویژگی های داده ردیف شما انواع ساده ای (رشته ، بولی ، شماره) یا اشیاء تغییر ناپذیر است که نیازی به اجرای روش مقایسه خود ندارید.

اگر نیاز به مقایسه سفارشی اشیاء دارید ، از روش Coldef. Equals (Val1 ، Val2) استفاده کنید. به عنوان مثال ، قطعه کد زیر مقایسه سفارشی را با یک ستون "نام" فراهم می کند که در آن نام در یک شیء پیچیده ذخیره می شود.

محاصره کردنتفاله= ستونهای ستونی: [ رشته: "شخص", // اگر نام های اول و نام خانوادگی برابر باشند ، روش درست برمی گردد برابر است: (شخص 1,شخص 2) =>  محاصره کردناولین نام=شخص 1.نام کوچک===شخص 2.نام کوچک; محاصره کردندارای نام خانوادگی=شخص 2.نام خانوادگی===شخص 2.نام خانوادگی; برگشتاولین نام&&دارای نام خانوادگی; > > ], // سایر گزینه های شبکه. >

تحریک تشخیص تغییر ارزش

عملیات زیر به طور خودکار باعث ایجاد تغییر در تمام سلولهای قابل مشاهده می شود:

  1. ویرایش هر مقدار از طریق شبکه UI (به عنوان مثال با کلیک بر روی یک سلول و وارد کردن یک مقدار جدید).
  2. با استفاده از روش گره ردیف Rownode. setDatavalue (COL ، مقدار).
  3. با استفاده از روش API API. ApplyTransaction (معامله).

اگر نمی خواهید تشخیص تغییر به طور خودکار انجام شود ، پس از آن ویژگی Grid RedpressChangedEtection = True را تنظیم کنید. این امر باعث می شود که هنگام وقوع وقایع فوق ، فرایند تشخیص تغییر را متوقف کند. در حالت ایده آل شما نمی خواهید تشخیص تغییر را خاموش کنید ، اما اگر تصمیم به خاموش کردن آن دارید ، گزینه وجود دارد. نکته ای که ممکن است شما را برای خاموش کردن آن جلب کند این است که اگر برخی از دریافت کنندگان ارزش سفارشی یا قوانین کلاس سلولی را دارید که برخی از محاسبات فشرده را انجام می دهند ، ممکن است بخواهید تعداد دفعاتی را که به آنها خوانده می شود محدود کنید و در هنگام انجام طراوت کنترل بیشتری داشته باشیدبشر

برای اجرای دستی تشخیص تغییر ارزش برای تازه کردن همه سلولهای قابل مشاهده Api. Refreshcells ().

2. تشخیص تغییر تجمع

تشخیص تغییر تجمع به معنای تجمع مجدد در هنگام تغییر ارزش است. به عنوان مثال ، اگر شما با یک ستون گروه بندی می کنید و با یک مقدار جمع می شوید و یکی از این مقادیر تغییر می کند ، باید مقدار خلاصه شده نیز تغییر کند.

مثال: تجمع مجدد گروه ها

مثال زیر نشان می دهد که تشخیص تغییر در نتیجه گروه ها تأثیر می گذارد. این شبکه تمام تازه سازی را به خودی خود انجام می دهد و بدون نیاز به برنامه مشتری صریح و صریح درخواست تازه سازی می شود. به موارد زیر توجه کنید:

  • گروه "گروه" به عنوان یک گروه ردیف مشخص شده است و ستون های A تا D به عنوان ستون های تجمع مشخص می شوند تا مقادیر آنها در سطح گروه خلاصه شود.
  • ستون "Total" دارای یک ارزش است که مجموعه ای از ستون های A به D را می دهد.
  • ستون های A تا D قابل ویرایش هستند. اگر مقدار سلول را ویرایش کنید ، مقدار کل در سطح گروه نیز به روز می شود تا تغییر را منعکس کند. این امر به این دلیل است که شبکه در نتیجه تغییر در محاسبه تجمع مجدد است.
  • تمام سلولها برای استفاده از یکی از رندر سلول انیمیشن Grids به جای سلول های چشمک زن تنظیم شده اند.< Pan> مثال زیر نشان می دهد که تشخیص تغییر در نتیجه گروه ها تأثیر می گذارد. این شبکه تمام تازه سازی را به خودی خود انجام می دهد و بدون نیاز به برنامه مشتری صریح و صریح درخواست تازه سازی می شود. به موارد زیر توجه کنید:
ویدیو های آموزشی فارکس...
ما را در سایت ویدیو های آموزشی فارکس دنبال می کنید

برچسب : نویسنده : محبوب امانی بازدید : 36 تاريخ : جمعه 10 شهريور 1402 ساعت: 22:43