[英]uibCollapse nested in an directive element won't work,
當我單擊my-dir時,折疊的元素將不會展開。 我在.btn
類的css中設置了大小以確保實際點擊事件。
// 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在這種情況下不起作用?
有任何想法嗎 ?
您需要解決兩件事:
1.更改click
綁定到ng-click
。 默認情況下,angular不會在jquery事件上運行其$digest
循環。 您可以通過在代碼中添加$scope.$apply()
或$timeout
來解決此問題,但我建議使用ng-click
作為更合適的方法。
<div class="btn" my-dir ng-click="isCollapsed = !isCollapsed"></div>
根據您的原始代碼,我應該將它添加到您的指令模板中,但您的dir-box
位置不會與藍色區域重疊...
2.使用overflow:hidden
在uib-collapse
元素上。
<div uib-collapse="isCollapsed" style="overflow: hidden;">
當父高度為0時,內容仍然顯示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.