我正在使用Ionic,并且想要根据数据动态更改每个项目的背景色<ion-list>
。我以为我可以通过函数调用的方式返回正确的类
<ion-list>
<ion-item ng-repeat="singleCase in allCases" ng-class="getBackgroundColour(singleCase)" class="item-avatar">
<h2>{{singleCase.date}}</h2>
<p>{{singleCase.caseType}}</p>
</ion-item>
</ion-list>
目前是控制器
.controller('AllCasesCtrl', ['$scope', '$log', 'dummyData', function($scope, $log, dummyData) {
$scope.allCases = dummyData.cases;
$scope.getBackgroundColour = function(singleCase){
$log.log("getBackgroundColour called...singleCase type: " + singleCase.speciality);
var colourMap = {
speciality1: "speciality1Class",
speciality2: "speciality2Class",
speciality3: "speciality3Class"
};
return colourMap[singleCase.speciality];
};
}])
在检查控制台时,列表中的getBackgroundColour()
每个函数均被调用7次<ion- item>
。这是为什么,我应该避免在其中使用函数调用ng-class
吗?
AngularJS可以进行脏检查:它需要在 每个循环中 调用该函数,以确保它不返回新值,并且不需要更新DOM。
这是框架典型过程的一部分,调用像您这样简单的函数不会对 性能产生任何负面影响 。在这里,代码的可读性和可测试性更为重要,因此请将逻辑保留在控制器中。
但是,要做的一件简单的事情colourMap
就是将函数的声明(它是一个常量)移到函数之外:
var colourMap = {
speciality1: "speciality1Class",
speciality2: "speciality2Class",
speciality3: "speciality3Class",
};
$scope.getBackgroundColour = function(singleCase) {
return colourMap[singleCase.speciality];
};
当我多次调用同一个函数时,每次都传递了不同的参数,我会这样做: 有没有更方便的方法做到这一点呢?
问题内容: 我想显示一个灯箱,其内容由ng-show显示,但是我不知道如何触发灯箱JS。我正在寻找类似的东西 问题答案: 我认为,最好监视绑定ng- show的模型。 这是示例: 和小提琴
问题内容: 我试图实现的基本上是“重复完成渲染”处理程序。我能够检测到何时完成,但是我不知道如何从中触发功能。 检查小提琴:http : //jsfiddle.net/paulocoelho/BsMqq/3/ JS 的HTML 答 :从finishmove的工作提琴:http : //jsfiddle.net/paulocoelho/BsMqq/4/ 问题答案: 请注意,我没有使用,而是将其包装在
问题内容: 我是新手并尝试学习过滤器的概念,但在我的情况下是两次调用过滤器,我期望过滤器只运行一次,但运行两次。不能理解为什么会这样。 这是我的 朋克 … 问题答案: 如果我没有把你的问题弄错的话,这就是这里的问题 Angularjs 使用“脏检查”方法,因此需要调用所有过滤器以查看是否存在任何更改。此后,它检测到一个变量(您键入的变量)有变化,然后再次执行所有过滤器以检测是否有其他变化。 这是另
问题内容: 我遇到了一个问题,我想绑定到ng-repeat循环内的函数的输出。我发现该函数每个项目被调用两次,而不是我期望的那样。这是ng- repeat部分(请注意最后的calcRowTotal()调用): calcRowTotal()函数如下所示: 接下来显示其中一个要迭代的项目的示例: 我在控制台中看到以下内容(我正在遍历的集合中当前有两项): 我当然可以做一个“ rowTotal”属性,但
经过一些实验,这似乎是使用CDI bean时的一个问题,而与我最初假设的PrimeFaces无关。 =============================================================================== 我对JSF和PrimeFaces还很陌生,因此任何指导都将非常感谢。我已经搜索了其他的帖子,并阅读了许多类似的,但没有找到解决方法。 我正试