角度视图:访问当前节点

时间:2015-07-24 15:40:33

标签: angularjs

我有以下观点:

<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 ,但这并不意味着不值得学习如何去做。

1 个答案:

答案 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",
}];

希望它有所帮助。如果你有任何问题,请随意。