【发布时间】:2016-05-13 14:22:35
【问题描述】:
我想添加一些预定义的颜色供用户选择。我用颜色制作了一个 $scope 数组,并通过数组的元素创建了按钮。每个按钮都有一个 ng-click 属性,我想在控制器上调用一个方法来处理传递的颜色属性。
我的html:
<button ng-repeat="color in colors" style="background-color:{{color}};" ng-click="ChangeBgColor(color)"></button>
还有控制器:
$scope.colors = ['#ddd', '#b2b2b2', '#0c60ee', '#0a9dc7', '#28a54c', '#e6b500', '#e42112', '#6b46e5', '#111', 'orange', 'yellow', 'maroon', 'green', 'brown', 'lightblue'];
$scope.ChangeBgColor = function(selectedColor)
{
console.log(selectedColor);
$scope.selectedProduct.bgcolor = selectedColor;
}
控制器中的 console.log 始终具有数组的第一个元素 #ddd。我什至也尝试过使用 ChangeBgColor('{{color}}'),但这也无济于事。 (虽然在检查 DOM 时结果相同,但我可以看到不同的颜色作为字符串参数。)
更好的方法是将 selectedProduct.bgcolor 属性绑定到 ng-repeat 并让 angular 进行选择并在用户选择其他颜色时进行更改,但我是 angular 新手,这对于一天来说似乎太多了.
【问题讨论】:
-
jsfiddle.net/stevenkaspar/bu9r82ct 这不是您想要的。我没有看到问题
-
@StevenKaspar 我有相同的代码,但我的不工作。您的 jsfiddle 中的那个有效,它将选定的颜色传递给方法。
-
当我点击另一个按钮时,第一个按钮看起来像是在推动......就像它们是单选按钮或其他东西。
-
渲染的按钮是否至少根据数组设置了背景颜色?
-
@TSmith 是的,他们从数组中获得了 bgcolor。问题是所有按钮都放在一个标签内。我已将标签更改为 div 并且按钮开始工作。然而我不知道为什么。我给出最佳解释的解决方案。
标签: javascript html angularjs