3

由于 ASP.net 捆绑功能,我收到一个 JavaScript 错误,JS 代码在缩小之前工作正常,但在缩小之后就不行了。

问题是有一个isSelected包含布尔值的变量。但是当代码被缩小时,它会将这个变量名缩短为i. 但是在该$.each方法中,我创建了一个带有两个参数的内联函数,一个是i.

似乎缩小逻辑没有意识到将变量重命名为i会与我的内联函数中的代码冲突。

这是 ASP.net 捆绑系统的错误吗?如果不是我建议如何解决这个问题,我担心虽然我可以重命名此错误可能会在我的 Web 应用程序的其他部分中出现的参数名称。

原始JS代码

function ItemManagerUpdateUi(instance) {
var selectedValue = instance.ItemCombo.GetValue();
var selectedItem = ItemManagerGetSelectedItem(instance);

var isSelected = selectedValue != null;

var isNewSelected = selectedValue == -1;

var applyText = isNewSelected ? "Add" : "Apply";
var text = isNewSelected ? "" : instance.ItemCombo.GetText();

var highestSortOrder = 0;
$.each(instance.Items, function (i, e) {
    if (e.SortOrder > highestSortOrder)
        highestSortOrder = e.SortOrder;
});

var sortOrder = isNewSelected || !isSelected ? highestSortOrder + 1 : selectedItem.SortOrder;

$('#' + instance.EditPanelId).toggle(isSelected);
$('#' + instance.ApplyButtonId).val(applyText);
$('#' + instance.DeleteButtonId).toggle(!isNewSelected); 

var labelWidth = $(instance.ItemCombo.GetMainElement()).closest('.rbox-clearfix').find('.labelStyle').width() + 15;

$('#' + instance.ButtonPanelId).css('margin-left', labelWidth + 'px');

instance.TextControl.SetText(text);
instance.SortOrderControl.SetNumber(sortOrder);

$.each(instance.CustomFields, function (i, e) {

    var value = isNewSelected || !isSelected ? null : selectedItem[e.DataName];

    var dxControl = eval(e.ControlName);

    dxControl.SetValue(value);
    dxControl.SetIsValid(true);
});

if (!isNewSelected)
    $(instance.ItemCombo.GetMainElement()).find('.dms-combo-main-input').removeClass('newActivityItem');

instance.TextControl.SetIsValid(true);
}

缩小后的JS代码

function ItemManagerUpdateUi(n) {
var u = n.ItemCombo.GetValue(), 
f = ItemManagerGetSelectedItem(n), 
i = u != null, 
t = u == -1,
s = t ? "Add" : "Apply",
h = t ? "" : n.ItemCombo.GetText(),
r = 0,
e,
o;

$.each(n.Items, function(n, t) {
    t.SortOrder > r && (r = t.SortOrder)
});
e = t || !i ? r + 1 : f.SortOrder;
$("#" + n.EditPanelId).toggle(i);
$("#" + n.ApplyButtonId).val(s);
$("#" + n.DeleteButtonId).toggle(!t);
o = $(n.ItemCombo.GetMainElement()).closest(".rbox-clearfix").find(".labelStyle").width() + 15;
$("#" + n.ButtonPanelId).css("margin-left", o + "px");
n.TextControl.SetText(h);
n.SortOrderControl.SetNumber(e);
console.log(i);
$.each(n.CustomFields, function(i, e) {
    console.log(i);
    var value = t || !i ? null : f[e.DataName]
      , dxControl = eval(e.ControlName);
    dxControl.SetValue(value);
    dxControl.SetIsValid(!0)
});
t || $(n.ItemCombo.GetMainElement()).find(".dms-combo-main-input").removeClass("newActivityItem");
n.TextControl.SetIsValid(!0)
}

编辑

经过更多研究,似乎删除 eval 代码行可以解决问题。目前,我将代码更改为不使用 eval,尽管这似乎仍然是捆绑过程中的一个错误,但由于某种原因,您在使用 eval 时会出现这些奇怪的行为

4

0 回答 0