【发布时间】:2016-04-08 15:16:00
【问题描述】:
我从 ng 类调用一个函数,因为我想根据价格动态返回类名。
我有 6 个数据和函数假设调用 6 次,但是当我运行代码时,我看到它调用了 12 次.....任何人都可以看到代码并告诉我为什么函数被调用 12 次6 个。
<div ng-app="myApp">
<ul ng-controller="MyController">
<li ng-class="setColor(item.price)" ng-repeat="item in products">{{item.name}} — {{item.price}}</li>
</ul>
</div>
var myApp = angular.module('myApp', []);
myApp.controller('MyController', function MyController($scope) {
$scope.setColor = function(price) {
alert(price);
}
$scope.products = [
{
'name' : 'Xbox',
'clearance' : true,
'price' : 30.99,
},
{
'name' : 'Xbox 360',
'clearance' : false,
'salesStatus' : 'old',
'price' : 99.99,
},
{
'name' : 'Xbox One',
'salesStatus' : 'new',
'price' : 50,
},
{
'name' : 'PS2',
'clearance' : true,
'price' : 79.99,
},
{
'name' : 'PS3',
'salesStatus' : 'old',
'price' : 99.99,
},
{
'name' : 'PS4',
'salesStatus' : 'new',
'price' : 20.99,
}
]
})
这里是 jsfiddle https://jsfiddle.net/tridip/ob8jh2o7/1/
更新:我的目标
如果价格低于 50,则商品颜色应为红色。如果价格超过 50,则项目颜色应为黄色,如果价格超过 (50+(50*60/100)),则项目颜色应为绿色。现在告诉我如何用更少的迭代来实现它。指导我以最佳方法完成它。
谢谢
如果修复它。这是我的新小提琴链接https://jsfiddle.net/tridip/ob8jh2o7/22/
【问题讨论】:
-
这就是 Angular 的工作原理。它将在每个摘要循环中执行并继续执行它,直到它检测到没有变化。这意味着每行至少两次,每个摘要循环每行最多 10 次。问题是什么? 12 次迭代不算什么。如果您有数千(甚至数百)行这样的行,ng-repeat 是出了名的慢,您应该考虑一次性绑定它们,但它们永远不会被更新。你的 json 不能改变或者它不会被反映...blog.thoughtram.io/angularjs/2014/10/14/…
标签: angularjs