У нас есть интерфейс с вкладками, внутри одной из этих вкладок - форма конфиденциальности. Эта форма конфиденциальности, а также использование внешнего файла JavaScript для большей части своей работы также использует встроенный JavaScript, поскольку в настоящее время он использует динамический код (на стороне сервера).
formTabs wrapper (вкладки ajax без функций обратного вызова)
...
<script type ="text/javascript">
var messagingTabset = ProjectName.Tabset.init({
'tabID': 'preferences-tabset',
'ajaxUrl0': '<%=Url.Action("PreferencesMainForm", "Profile")%>',
'ajaxUrl1': '<%=Url.Action("ProfileImageForm", "Profile")%>',
'ajaxUrl2': '<%=Url.Action("InterestsForm", "Profile")%>',
'ajaxUrl3': '<%=Url.Action("PrivacyForm", "Profile")%>',
'ajaxUrl4': '<%=Url.Action("PasswordForm", "Profile")%>',
'ajaxUrl5': '<%=Url.Action("CustomUrlForm", "Profile", new {userId = Model.UserId})%>',
'defaultAjaxUrl': '<%=Url.Action(Model.PartialName, "Profile")%>'
});
</script>
...
вид конфиденциальностиForm (более встроенный javascript с серверным кодом)
...
<script type = "text/javascript">
var preferencesPrivacyForm = new ProjectName.AJAX.Form({
"ajaxFormID": "preferences-privacy-form",
"actionUrl": '<%= Url.Action("SavePrivacy","Profile") %>',
"dataReturnType":"json"
});
</script>
...
Разработчик заглавных букв: "Код JavaScript конфигурации для этой формы должен оставаться в режиме конфиденциальностиForm"
Разработчик интерфейсов: "Хм, я уверен, что я читал, что это не способ сделать это - ненадежный, весь JavaScript должен быть внутри HTML-страницы, содержащей вкладки обертка, внутри функции обратного вызова этой загрузки вкладок. Вы должны действительно a) предоставить логику для меня, чтобы получить динамические данные внутри вкладки-обертки или b) позволить мне захватить эти динамические переменные через обход DOM"
Разработчик заставкой: "Оба эти метода - большая часть работы, без реальной выплаты! Первый пример плох, потому что это означает, что мне придется изменить способ его создания ( и работает отлично).Это, вероятно, будет означать дублирование. Второй пример является изворотливым, поскольку разметка может измениться, поэтому кто-то, кто работает над кодом, может забыть отредактировать методы обхода DOM в wrap-wrapper. Это еще один уровень абстракции, который нам не нужно. Если вы предоставите мне некоторые доказательства того, почему это действительно очень плохо, я проверю это, но в противном случае я не могу оправдать время в
Разработчик интерфейсов: "Ну, я уже потратил несколько дней на то, чтобы устранить проблемы с загруженным JavaScript AJAX, поставив их в обратные вызовы своих оберток, но да, теперь вы думаете об этом, Хорошая ссылка на эту вещь была бы очень приятной, потому что вы правы, на данный момент приложение работает без проблем. '
Это один из многих примеров в большом приложении, где мы загружаем встроенный JavaScript с помощью Ajax.
Должен ли я убеждать внутреннего разработчика, что мы должны использовать обратные вызовы, или я что-то не хватает?