AngularJs ng显示和自定义指令
我有一个调整元素宽度的指令。它被称为伸缩柱。这在我的整个应用程序中一直有效。 它的工作方式是查看指令的子项并计算每个子项的高度。如果高度大于视口,则会增加指令的宽度 我遇到了AngularJs ng显示和自定义指令,angularjs,Angularjs,我有一个调整元素宽度的指令。它被称为伸缩柱。这在我的整个应用程序中一直有效。 它的工作方式是查看指令的子项并计算每个子项的高度。如果高度大于视口,则会增加指令的宽度 我遇到了ng show的问题。通常我使用ng if,但在这种情况下,我需要使用ng show。 这样做的问题是,我的指令计算子元素的高度(因为元素是隐藏的,所以为0),而不更改宽度 当ng show为true时,将显示内容,但我的指令不会再次触发,因为只显示if。所以,我的问题是: 我是否可以覆盖ng show指令来触发指令代码或
ng show
的问题。通常我使用ng if
,但在这种情况下,我需要使用ng show
。
这样做的问题是,我的指令计算子元素的高度(因为元素是隐藏的,所以为0),而不更改宽度
当ng show
为true时,将显示内容,但我的指令不会再次触发,因为只显示if。所以,我的问题是:
- 我是否可以覆盖
指令来触发指令代码或ng show
- 当
为真时,是否有方法触发我的指令ng show
ng show
表达式中的条件从false更改为true,然后在该点重新运行测量代码链接
功能中检查是否设置了ng show
属性,如果设置了属性,则在表达式上设置一个手表,当表达式从false
更改为true
时,该手表将重新测量。如果您只可能遇到ng show
的问题,我更喜欢这种方法,因为它不需要更改任何其他代码function postLink (scope, element, attributes, controller) {
if (attributes.ngShow) {
scope.$watch(attributes.ngShow, (newVal, oldVal) {
if (newVal && !oldVal) {
controller.measure();
}
}
} else {
// note this is in an else to prevent measure firing twice
// if ngShow is set and it's initially true.
controller.measure();
}
}