javascript - 嵌套在指令元素中的 uibCollapse 将不起作用,

标签 javascript angularjs angular-ui-bootstrap

当我单击 my-dir 时,折叠的元素不会展开。 我在 css 中为 .btn 类设置了大小,以确保实际单击事件。

//index.html

<body ng-controller="ctrl">
    <p>{{hello}}</p>
    <div class="btn" my-dir></div>
</body>

//app.js

var app = angular.module('app', ['ui.bootstrap']);

app.controller('ctrl', function($scope){
    $scope.hello = 'hello';
});

app.directive('myDir', function() {
    return {
        restrict: 'A',
        replace: false,
        templateUrl: './tmpl.html',
        link: function (scope, element, attrs) {
          scope.isCollapsed = true;
          element.bind('click', function (e) {
            scope.isCollapsed = !scope.isCollapsed;
          })
        }
    };
});

//tmpl.html

<div class="dir-box">
    <div uib-collapse="isCollapsed">
        <p>Hello World!</p>
        <p>Nice to meet You!</p>
        <p>: )</p>
    </div>
</div>

为什么 uibCollapse 在这种情况下不起作用?

有什么想法吗?

plunker here

最佳答案

您需要修复两件事:

1.更改click绑定(bind)到ng-click 。默认情况下,Angular 不运行其 $digest循环 jquery 事件。您可以通过添加 $scope.$apply() 来解决此问题或$timeout在您的代码中,但我建议使用 ng-click作为一个更合适的方式。

<div class="btn" my-dir ng-click="isCollapsed = !isCollapsed"></div>

根据您的原始代码,我应该将其添加到您的指令模板中,但是您的 dir-box位置不与蓝色区域重叠...

2.使用overflow:hiddenuib-collapse元素。

<div uib-collapse="isCollapsed" style="overflow: hidden;">

当父高度为0时,内容仍然显示

plunker

关于javascript - 嵌套在指令元素中的 uibCollapse 将不起作用,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38236162/

相关文章:

mysql - Mean Stack -> Sequelize Mysql 关联

javascript - Angular Slick 旋转木马幻灯片堆叠在页面中

javascript - CSV 文件作为单个字符串返回

css - 如何修复表单控件的宽度?

javascript - 插件编程nodeJs

javascript - Rails,从下拉菜单中选择不会触发不同的过滤器

javascript - 如何访问我的 Controller 中的 AngularJS ui-bootstrap datepicker 值

javascript - 单击年份时月份模式下的 Angular ui-datepicker 不起作用

javascript - 如何封装和创建可维护的 JavaScript

javascript - 即使我设置了 express.static() 并具有正确的路径,我的第一个应用程序也不提供 css