我有以下观点:
<div ng-class="setClass($currentNode)">{{setContent($currentNode)}}</div>
使用以下控制器:
$scope.setClass = function(currentNode) {
// Process with angular.element(currentNode);
}
$scope.setContent = function(currentNode) {
// Process with angular.element(currentNode);
}
我可以访问调用该方法的$currentNode
吗?来自setClass
?来自setContent
?既?
由于
感谢您的回复和评论。我知道自己在做什么,所以我会进一步解释。
我认为:
<div ng-repeat="element in elements" ng-class="setClass(element)">{{setValue(element)}}</div>
在控制器中:
$scope.setValue = function(element) {
return callOfAFunctionThatRequiresSomeHardComputation(element);
}
$scope.setClass = function(element) {
return callOfAFunctionThatRequiresSomeHardComputation(element) > 0 ? 'active' : '';
}
我不想在每个callOfAFunctionThatRequiresSomeHardComputation
周期内计算$digest
次2次,因为它已经非常重要了。
所以我宁愿写:
$scope.setValue = function(element, $currentNode) {
var result = callOfAFunctionThatRequiresSomeHardComputation(element);
if (result > 0) {
angular.element($currentNode).addClass('active');
} else {
angular.element($currentNode).removeClass('active');
}
return result;
}
我知道初学者可能很容易错过 angular-way ,但这并不意味着不值得学习如何去做。
答案 0 :(得分:0)
这样做的有条理的方法是这样的:
<强> HTML 强>
<div ng-class="{{myclass}}">{{mycontent}}</div>
<强> JS 强>
$scope.myclass="a-class";
$scope.mycontent="acontent";
如果您想管理更多元素,只需使用ng-repeat复制数组中每个项目的html元素。
<强> HTML 强>
<div ng-class="{{item.class}}" ng-repeat="item in items">{{item.content}}</div>
<强> JS 强>
$scope.items = [{
class:"Class1",
content:"Content1",
},{
class:"Class2",
content:"Content2",
}];
希望它有所帮助。如果你有任何问题,请随意。