我认识到这一问题的一种形式之前已被要求(见28208451),但是,我需要的输入值,然后将其设置为新的数值来更新.LESS文件的输入值的变量以便其他输入字段可以访问它。这是一个link to my plunk。如何动态使用AngularJS
我可以进入一个新的色调,但它不会被保存,当我试图改变饱和度或亮度。我相信这是一个简单的解决方案(可能是一个指令),但对于我的生活,我无法将头围绕在它周围。我在AngularJS上还是相当新的......任何帮助将不胜感激。
**controller:**
angular.module('colorChanger', [])
.controller('ColorController', [
function() {
var vm = this;
vm.hue = '194.3';
vm.saturation = '100';
vm.lightness = '50';
vm.newHue = function() {
if (vm.hue) {
less.modifyVars({
hue: vm.hue
});
}
};
vm.newSaturation = function() {
if (vm.saturation) {
less.modifyVars({
saturation: vm.saturation
});
}
};
vm.newLightness = function() {
if (vm.lightness) {
less.modifyVars({
lightness: vm.lightness
});
}
};
}
]);
**index:**
<ul>
<li class="bgc-color-base"></li>
</ul>
<form data-ng-submit="color.newHue()" data-ng-controller="ColorController as color">
<label for="hue">Hue:</label>
<input type="text" id="hue" data-ng-model="color.hue" />
<input type="submit" value="Submit" />
</form>
<form data-ng-submit="color.newSaturation()" data-ng-controller="ColorController as color">
<label for="saturation">Saturation:</label>
<input type="text" id="saturation" data-ng-model="color.saturation" />
<input type="submit" value="Submit" />
</form>
<form data-ng-submit="color.newLightness()" data-ng-controller="ColorController as color">
<label for="lightness">Lightness:</label>
<input type="text" id="lightness" data-ng-model="color.lightness" />
<input type="submit" value="Submit" />
</form>
**less:**
ul {
list-style: none;
padding: 0;
margin-bottom: 20px;
li {
height: 100px;
&.bgc-color-base {
.background-base;
}
}
}
//== color variables
@hue: 194.3; // enter optional hue variable or custom hue range 0-330
@saturation: 100; // saturation range 0-100
@lightness: 50; // lightness range 0-100 (0 = black, 100 = white)
@alpha: 1;
//== base color function
@color-base: hsla(@hue, (@saturation/100), (@lightness/100), @alpha);
//== base color mixins
.background-base(@hue: @hue, @saturation: @saturation, @lightness: @lightness, @alpha: @alpha) {
background: @color-base;
}
我不知道该用例是在这里的东西,但要记住的是,根据少文档“[我们建议您使用浏览器仅用于开发更少](HTTP:// lesscss .org/usage /#using-less-in-the-browser)' - 如果目标是具有动态可变数据背景,则可以使用ng样式指令在元素上设置内联样式。我[更新了你的plunkr](http://embed.plnkr.co/Stm0FZ/preview)。就我个人而言,我认为浏览器内的修改应该用类或可能的内联样式处理,而不是涉及较少。 –
我同意你的观点,通常我不会尝试它,但我想在我正在构建的应用程序中创建一个实时演示,以演示使用较少的颜色方案的幕后代。这是[pen](http://codepen.io/MAustinMMDP/pen/MwaEyB),显示的代码越少。我意识到这已经与codepen完成了,但我认为创建一个不需要手动更改色调,饱和度和亮度变量的用户交互应用程序会很有趣。 – MAustinMMDP
实际上,无论哪种方式都需要编辑变量,但允许用户在窗口中进行交互将更加动态,然后必须手动编辑较少的代码。无论如何,我现在认为嵌入笔是更好的选择。我想我只是陷入了使它工作的状态,我忽视了它是否应该;)。感谢你的帮助! – MAustinMMDP