У нас есть интерфейс с вкладками, внутри одной из этих вкладок находится форма конфиденциальности. Эта форма конфиденциальности, а также использование внешнего файла JavaScript для основной части своей работы также использует встроенный JavaScript, поскольку в настоящее время он использует динамический код (на языке сервера).
Оболочка formTabs (вкладки 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>
...
представление PrivacyForm (более встроенный JavaScript с серверным кодом)
...
<script type = "text/javascript">
var preferencesPrivacyForm = new ProjectName.AJAX.Form({
"ajaxFormID": "preferences-privacy-form",
"actionUrl": '<%= Url.Action("SavePrivacy","Profile") %>',
"dataReturnType":"json"
});
</script>
...
Бэкэнд-разработчик : «Код JavaScript конфигурации для этой формы должен оставаться в режиме PrivacyForm»
Разработчик внешнего интерфейса : «Хм, я уверен, что я читал, что это не способ сделать это - ненадежно, весь JavaScript должен быть внутри HTML-страницы, которая содержит оболочку вкладок , внутри функции обратного вызова этой вкладки загружаются. Вы действительно должны: а) предоставить мне логику получения динамических данных внутри tabs-wrapper или б) позволить мне получить эти динамические переменные через обход DOM "
Бэкэнд-разработчик : «Оба эти метода - большая работа без реальной выгоды! Первый пример плох, потому что это означает, что мне придется изменить способ его построения (и работает нормально.) Это, вероятно, будет означать дублирование. Второй пример является хитрым, так как разметка может измениться, поэтому кто-то, работающий над кодом, может забыть редактировать методы обхода DOM в tabs-wrapper. Это еще один уровень абстракции, который мы не нужно. Если вы предоставите мне некоторые доказательства того, почему это действительно очень плохо, я это проверю, но в противном случае я не могу оправдать то, что нашел время "
Разработчик интерфейса : «Ну, я уже потратил несколько дней впустую, исправляя проблемы с загруженным AJAX JavaScript, помещая их в обратные вызовы своих оболочек, но да, теперь вы думаете об этом, хороший Ссылка на подобные вещи была бы очень хороша, потому что вы правы, на данный момент приложение работает без проблем. '
Это один из многих примеров в большом приложении, где мы загружаем встроенный JavaScript с помощью Ajax.
Должен ли я убеждать внутреннего разработчика, что мы должны использовать обратные вызовы, или я что-то упустил?