我正在使用less.js中的less.modifyVars()函数。
在控制台中,我可以这样做:
less.modifyVars({ '@body-bg' : 'black' });
它重新编译得越少,给页面留下黑色背景。所以这很好。
然后我在代码中尝试使用:
$scope.variableChange = function(selectedVariable) {
var slug = "'" + selectedVariable.slug + "'";
var value = "'" + selectedVariable.value + "'";
less.modifyVars({ slug : value });
};
现在,我可以看到less.modifyVars()函数确实执行了,因为我在控制台中收到通知,但它似乎没有传递正确的值。所以我在variableChange函数中添加了一个console.log:
console.log(slug + ":" + value);
然后我得到控制台输出:
'@body-bg':'black'
这应该意味着less.modifyVars()函数用:
执行less.modifyVars({ '@body-bg' : 'black' });
但我不明白。这有什么问题?
答案 0 :(得分:2)
你制作对象的方式是错误的
您要设置的是
{ "slug" : "'black'" }
您不能将变量设置为类似的键,并且您不需要添加额外的引号,只需在字符串中添加引号即可。
只需创建一个对象,添加一个键,设置值。
var obj = {};
obj[selectedVariable.slug] = selectedVariable.value;
less.modifyVars(obj);