angularjs范围变量onclick为条件div

时间:2013-11-22 09:11:45

标签: angularjs

我有两个div,我想通过onclick事件有条件地展示它们。

MY-角app.js

$(document).on('click', '#showless', function(el) {
 var appElement = document.querySelector('[ng-app=myapp]');
 var $scope = angular.element(appElement).scope();
  $scope.$apply(function() {
      $scope.value = false;
    });

});

$(document).on('click', '#showmore', function(el) {
  var appElement = document.querySelector('[ng-app=myapp]');
  var $scope = angular.element(appElement).scope();
  $scope.$apply(function() {
       $scope.value = true;
 });

});

和myapp的my div(myapp.html)

    <div ng-show="desc" id="description" class="text-muted" style="padding-top:5px;padding-left:10px;padding-right:10px;color:#2E2E2E;font-size:11px;">{{myapp.value|truncate}}<span><a id="showmore" href="">more</a></span>
    </div>
    <div ng-show="!desc" id="description" class="text-muted" style="padding-top:5px;padding-left:10px;padding-right:10px;color:#2E2E2E;font-size:11px;">{{myapp.value}}<span><a id="showless" href="">less</a></span>
    </div>

(truncate是我写的过滤器,工作正常。)

1 个答案:

答案 0 :(得分:6)

我不确定您要做什么,但Angular提供了ng-click,因此您不必绑定到$(document).on('click')

我建议使用更简单的条件显示方法:

<div ng-show="desc" id="description" class="text-muted" style="padding-top:5px;padding-left:10px;padding-right:10px;color:#2E2E2E;font-size:11px;">{{myapp.value|truncate}}<span><a id="showmore" ng-click="desc = true" href="#">more</a></span>
    </div>
    <div ng-show="!desc" id="description" class="text-muted" style="padding-top:5px;padding-left:10px;padding-right:10px;color:#2E2E2E;font-size:11px;">{{myapp.value}}<span><a id="showless" ng-click="desc = false" href="#">less</a></span>
    </div>

以上使用ng-click设置desc的值。因此,控制器中不需要任何其他逻辑来切换divs