0

我正在使用 Angularjs ui 作为引导库。特别是我,想要自定义“折叠”指令的行为。目前,如果我在一个页面上有多个可折叠部分,它会同时折叠它们。我想将它们分开,这样我就可以知道哪个元素触发了事件。并仅折叠该部分。我尝试了几种不同的方法,包括在 ng-click 中添加 $event 表达式,但它的返回未定义。

我希望有人可以帮我修复此代码吗?

.directive("collapse", ["$transition", function (e, $event) { var t = function (e, t, n) { t.removeClass("collapse"), t.css({height: n}), t[0].   offsetWidth, t.addClass("collapse") };

return{link: function (n, a, i) { var r, o = !0; n.$watch(function () { return a[0].scrollHeight }, function () { 0 !== a[0].scrollHeight && (r || (o ? t(n, a, a[0].scrollHeight + "px") : t(n, a, "auto"))) }), n.$watch(i.collapse, function (e) { console.log(r); e ? u() : c() //removed for testing }); var l, s = function (t) { return l && l.cancel(), l = e(a, t), l.then(function () { l = void 0 }, function () { l = void 0 }), l }, c = function () {

o ? (o = !1, r || t(n, a, "auto")) : s({height: a[0].scrollHeight + "px"}).then(function () { r || t(n, a, "auto") }), r = !1 }, u = function () { r = !0, o ? (o = !1, t(n, a, 0)) : (t(n, a, a[0].scrollHeight + "px"), s({height: "0"})) } }} }])
4

1 回答 1

2

您的问题很可能是您collapse为每个单独的实例使用了相同的范围变量。这会将它们连接在一起。

从这个演示中可以看出,当变量不同时,它们可以很好地配合使用

DEMO

于 2013-11-07T04:56:41.390 回答