我们有一个标签式界面,其中一个标签内有隐私表格。此隐私表单以及使用外部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页面内,在该选项卡加载的回调函数内。你应该真的a)为我提供逻辑 - 在tabs-wrapper中获取动态数据或b)让我通过DOM遍历获取这些动态变量“
后端开发人员:“这两种方法都有很多工作没有真正的回报!第一个例子很糟糕,因为这意味着我将不得不改变它的构建方式(并且工作正常)。这可能意味着重复。第二个例子是狡猾的,因为标记可能会改变,所以处理代码的人可能会忘记在tabs-wrapper中编辑DOM遍历方法。这是我们不需要的另一个抽象层次。如果你给我提供了一些证据关于为什么这真的非常糟糕,我会检查出来,但除此之外,我不能证明把时间花在“
前端开发人员:'好吧,我已经浪费了几天,通过将它们放回到包装器的回调来解决AJAX加载JavaScript的问题,但是现在你想到它,对这类事情的一个很好的参考将是非常好的,因为你是对的,目前,应用程序正在运行,没有任何问题。
这是我们使用Ajax加载内联JavaScript的大型应用程序中的众多示例之一。
我应该说服后端开发人员我们应该使用回调,还是我错过了什么?