一个例子是解释这一个的最简单方法。我正在处理实际页面上<script>
标记内有大量javascript的代码。我通常喜欢将javascript放在外部文件中(当你在许多页面中找到共同点时,它更适合重构)。困难在于代码如果充满了动态函数名,类名和id ......就像这样:
function handlePosData@(mySuffix)(data) {
$('#myDiv@(mySuffix)').css('cursor', 'auto');
if (data && data.length > 0) {
$('#lstPos@(mySuffix)').data('kendoGrid').dataSource.data(data);
}
}
mySuffix
是在Razor代码顶部生成的GUID
(我对这个代码库来说是全新的,所以不要问我为什么会这样。这个网络应用可以同时打开许多不同的弹出窗口,我假设这是一个需要确保的解决方案独特的名字......)
任何想法如何启用相同的方案,但使用外部JavaScript文件?
答案 0 :(得分:1)
我认为这些函数是从你的剃刀页面调用的(而不是外部的js文件)。如果是这样,您可以执行以下操作:
更改函数以使其成为标准函数,而不是直接在函数中使用剃刀,使用js变量:
// this can be moved to external js
function handlePosData(data, mySuffix) { // pass in mySuffix to function so it is a js var
$('#myDiv' + mySuffix).css('cursor', 'auto');
if (data && data.length > 0) {
$('#lstPos' + mySuffix).data('kendoGrid').dataSource.data(data);
}
}
然后在你的剃刀代码中,你只需要调用这个函数:
handlePosData(data, '@(mySuffix)'); // not sure what your data is so just left that as a var that you pass in