Angularjs 使用更少的.modifyVars()和

Angularjs 使用更少的.modifyVars()和,angularjs,less,Angularjs,Less,我有一个输入列表,由以下人员创建: <div ng-controller="MainCtrl"> <div ng-repeat="variable in variables"> <label>{{ variable.slug }}</label> <input type="text" ng-model="variable.value" ng-change="variableChange()" /> </div>

我有一个输入列表,由以下人员创建:

<div ng-controller="MainCtrl">
<div ng-repeat="variable in variables">
    <label>{{ variable.slug }}</label>
    <input type="text" ng-model="variable.value" ng-change="variableChange()" />
</div>
</div>
我正在使用less.js在浏览器中编译less,我希望能够在变量更改时重新编译它-类似于控制器内部:

function MainCtrl($scope) {
    $scope.variables = [
        {'slug':'background', 'value':'#666'},
        {'slug':'foreground', 'value':'#999'}
    ]
}
$scope.variableChange = function() {
    less.modifyVars({ variable.slug : variable.value });
};
但我得到了一个错误:

ParseError: Unrecognised input in preview-style.less on line 102, column 1:
102@variable.slug: variable.value;
但是如果我去掉变量的撇号,我会得到一个角度误差:

Bad Argument: Argument 'MainCtrl' is not a function, got undefined
有人能帮忙吗

编辑:下面是less.modifyVars()函数(如果有帮助):

less.modifyVars = function (a) {
    var b = "";
    for (var c in a) b += ("@" === c.slice(0, 1) ? "" : "@") + c + ": " + (";" === a[c].slice(-1) ? a[c] : a[c] + ";");
    less.refresh(!1, b)
}

如果在控制器内部写入,则必须使用
$scope
对作用域属性进行寻址:

$scope.variableChange = function() {
    less.modifyVars({ $scope.variable.slug : $scope.variable.value });
};
但是,由于
ng repeat
,这个示例无法运行

最好将对象传递给函数:

<div ng-controller="MainCtrl">
<div ng-repeat="variable in variables">
    <label>{{ variable.slug }}</label>
    <input type="text" ng-model="variable.value" ng-change="variableChange(variable)" />
</div>
</div>

如果在控制器内部写入,则必须使用
$scope
对作用域属性进行寻址:

$scope.variableChange = function() {
    less.modifyVars({ $scope.variable.slug : $scope.variable.value });
};
但是,由于
ng repeat
,这个示例无法运行

最好将对象传递给函数:

<div ng-controller="MainCtrl">
<div ng-repeat="variable in variables">
    <label>{{ variable.slug }}</label>
    <input type="text" ng-model="variable.value" ng-change="variableChange(variable)" />
</div>
</div>

啊,那似乎是更好的办法。但是,我在less.modifyVars上得到一个“Uncaught SyntaxError:Unexpected identifier”错误。。。线路。我把它改为console.log(selectedVariable.slug);它起作用了,所以我想至少变量现在在控制器中是可用的。我想问题在于less.modifyVars()函数。无论如何谢谢你的帮助。现在用:var slug=toString(selectedVariable.slug)解决了这个问题;var value=toString(selectedVariable.value);less.modifyVars({slug:value});啊,那似乎是更好的办法。但是,我在less.modifyVars上得到一个“Uncaught SyntaxError:Unexpected identifier”错误。。。线路。我把它改为console.log(selectedVariable.slug);它起作用了,所以我想至少变量现在在控制器中是可用的。我想问题在于less.modifyVars()函数。无论如何谢谢你的帮助。现在用:var slug=toString(selectedVariable.slug)解决了这个问题;var value=toString(selectedVariable.value);less.modifyVars({slug:value});