angularjs范围变量onclick为条件div

Rat*_*mar 2 angularjs

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

我的棱角,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;
 });

});
Run Code Online (Sandbox Code Playgroud)

和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>
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*yon 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>
Run Code Online (Sandbox Code Playgroud)

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