JamieMThomas,一个(尝试将Microsoft JQuery模板和链接结合起来的好人):
mapping[binding.field] = {
convert: function (value, source, target) {
if (binding.converter && binding.converter.convert) {
value = binding.converter.convert(value, source, target)
if (value === undefined)
return;
}
$(target).attr(attrName, value);
}
};
我试图破解它以允许binding.field
使用类似"LPC[0].itemid"
的字符串(字面意思是字符串)。我使用eval作为一个可怕的选择,但这是我能做的最快的事情(并将在以后重写)。我最初尝试将内容分配给eval('')本身,但它不允许我。
eval('(mapping.' + binding.field + ')') =
{ // rest is the same
convert: function (value, source, target) {
if (binding.converter && binding.converter.convert) {
value = binding.converter.convert(value, source, target)
if (value === undefined)
return;
}
$(target).attr(attrName, value);
}
};
显然左侧的作业无效。我怎么能做到这一点?
答案 0 :(得分:3)
您可以将整个作业放在eval
:
eval('mapping.' + binding.field + ' = { ... }');
这将是一个包含函数定义
的非常大的字符串
要使字符串更小,可以将函数放在外部变量中:
var converter = function (value, source, target) {
if (binding.converter && binding.converter.convert) {
value = binding.converter.convert(value, source, target)
if (value === undefined)
return;
}
$(target).attr(attrName, value);
};
eval('mapping.' + binding.field + ' = { convert: converter }');