سلام دوستان،
یک بار دیگر یافته جدیدی که می خواستم با شما در ارتباط با JSLink در شیرپوینت 2013 به اشتراک بگذارم.
سناریو
من برخی از داده ها را از لیست با استفاده از یک بخش وب XSLTListView در صفحه SharePoint 2013 نمایش می دهم. من گزینه JSLink را برای دادن یک رابط کاربری منطبق با آن داده انتخاب کرده ام. داده ها با استفاده از فایل JSLink سفارشی من با رابط کاربری جدید به درستی رندر می شوند، اما می خواستم پس از بارگیری همه ردیف ها، یک تابع jQuery را فراخوانی کنم تا تماس jQuery من انجام نشود. شکست می خورد و ردیف های رندر شده را به درستی دریافت می کند.
راه حل
ما باید یک کنترل کننده در رویداد OnPostRender ارائه دهیم یا می توانیم تابع را مستقیماً همانطور که در کد زیر نشان داده شده است فراخوانی کنیم، اگرچه تفاوت زیادی بین این دو وجود ندارد -
انتخاب 1
- (function() {
- var overrideCtx = {};
- overrideCtx.Templates = {};
- overrideCtx.Templates.Header = "";
- overrideCtx.Templates.Footer = "";
- overrideCtx.Templates.Item = CustomDemoItem;
- overrideCtx.OnPostRender = [];
- overrideCtx.OnPostRender.push(function() {
- //call your ready function here
- });
- SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
- })();
گزینه 2
- (function() {
- var overrideCtx = {};
- overrideCtx.Templates = {};
- overrideCtx.Templates.Header = "";
- overrideCtx.Templates.Footer = "";
- overrideCtx.Templates.Item = CustomDemoItem;
- overrideCtx.OnPostRender = [];
- overrideCtx.OnPostRender.push(function() {
- OnPostRenderFunc();
- });
- SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
- })();
- function OnPostRenderFunc(renderCtx) {
- //call your ready function here
- }
امیدواریم این به برخی از توسعه دهندگانی که به دنبال پاسخ مشابه هستند کمک کند.
کد نویسی مبارک….