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});