Javascript 在Angularjs中ng show之后如何操作DOM?
我是安格拉斯的新手。我使用的是angularjs版本1.2.13。 我遇到了一个场景,在ng show显示我的DIV之后,我需要操纵DOM以重新对齐一些DIV列。如果我的div是隐藏的,我就不能重新对齐它们 HTML如下所示:Javascript 在Angularjs中ng show之后如何操作DOM?,javascript,angularjs,Javascript,Angularjs,我是安格拉斯的新手。我使用的是angularjs版本1.2.13。 我遇到了一个场景,在ng show显示我的DIV之后,我需要操纵DOM以重新对齐一些DIV列。如果我的div是隐藏的,我就不能重新对齐它们 HTML如下所示: <div ng-controller="MyController" ng-show="IsThisShown"> <div class="column">1</div> <div class="column"&g
<div ng-controller="MyController" ng-show="IsThisShown">
<div class="column">1</div>
<div class="column">2</div>
<div class="column">3</div>
</div>
有很多种方法,但我马上想到的是:
<div ng-controller="MyController" ng-show="IsThisShown">
<div class="column" realign="IsThisShown">1</div>
<div class="column" realign="IsThisShown">2</div>
<div class="column" realign="IsThisShown">3</div>
</div>
1.
2.
3.
让您的新指令遵守其论点,并在其实现时进行重新调整。有很多方法,但立即想到的方法是:
<div ng-controller="MyController" ng-show="IsThisShown">
<div class="column" realign="IsThisShown">1</div>
<div class="column" realign="IsThisShown">2</div>
<div class="column" realign="IsThisShown">3</div>
</div>
1.
2.
3.
让您的新指令遵守其论点,并在其实现时进行重新调整。有很多方法,但立即想到的方法是:
<div ng-controller="MyController" ng-show="IsThisShown">
<div class="column" realign="IsThisShown">1</div>
<div class="column" realign="IsThisShown">2</div>
<div class="column" realign="IsThisShown">3</div>
</div>
1.
2.
3.
让您的新指令遵守其论点,并在其实现时进行重新调整。有很多方法,但立即想到的方法是:
<div ng-controller="MyController" ng-show="IsThisShown">
<div class="column" realign="IsThisShown">1</div>
<div class="column" realign="IsThisShown">2</div>
<div class="column" realign="IsThisShown">3</div>
</div>
1.
2.
3.
让你的新指令观察它的论点,并在它变为现实时进行重新调整。你有几个不同的选择 您可以探索的一个选项是在
reallign
指令中使用隔离作用域
请参见以下示例:
您不必使用隔离作用域,因为角度作用域本质上是典型的(尽管在原语方面有一些问题),但我想我会把它放到示例中,这样您就可以看到隔离作用域在起作用了。在这个例子中,我使用了一个带有执行表达式的隔离作用域
这只是一个随机示例,它基于您的描述,在显示父级后随机重新定位一些div
希望这能有所帮助。您有一些不同的选择 您可以探索的一个选项是在
reallign
指令中使用隔离作用域
请参见以下示例:
您不必使用隔离作用域,因为角度作用域本质上是典型的(尽管在原语方面有一些问题),但我想我会把它放到示例中,这样您就可以看到隔离作用域在起作用了。在这个例子中,我使用了一个带有执行表达式的隔离作用域
这只是一个随机示例,它基于您的描述,在显示父级后随机重新定位一些div
希望这能有所帮助。您有一些不同的选择 您可以探索的一个选项是在
reallign
指令中使用隔离作用域
请参见以下示例:
您不必使用隔离作用域,因为角度作用域本质上是典型的(尽管在原语方面有一些问题),但我想我会把它放到示例中,这样您就可以看到隔离作用域在起作用了。在这个例子中,我使用了一个带有执行表达式的隔离作用域
这只是一个随机示例,它基于您的描述,在显示父级后随机重新定位一些div
希望这能有所帮助。您有一些不同的选择 您可以探索的一个选项是在
reallign
指令中使用隔离作用域
请参见以下示例:
您不必使用隔离作用域,因为角度作用域本质上是典型的(尽管在原语方面有一些问题),但我想我会把它放到示例中,这样您就可以看到隔离作用域在起作用了。在这个例子中,我使用了一个带有执行表达式的隔离作用域
这只是一个随机示例,它基于您的描述,在显示父级后随机重新定位一些div
希望这会有所帮助。其他答案都是好的(标准的),但是将重新对齐指令与该变量显示/隐藏的结果联系起来。例如,如果有两个嵌套的ng show,则会出现故障。在我看来,更好的解决方案是创建一个具有以下范围的on-show指令:
scope: { 'onShow' : '&' }
在link函数中,设置$scope.$watch,如下所示:
$scope.$watch(
function() { return $element.hasClass('ng-hide'); },
function(newVal, oldVal) { /* execute onShow here if newVal === false */ }
);
您也可以(我不建议这样做)将ng show更改为ng if。ng if从DOM中删除和添加元素,而不仅仅是隐藏它们。在这种情况下,每次元素重新出现时,链接函数都会触发。其他答案都是好的(并且是标准的),但是将重新对齐指令与该变量显示/隐藏的结果联系起来。例如,如果有两个嵌套的ng show,则会出现故障。在我看来,更好的解决方案是创建一个具有以下范围的on-show指令:
scope: { 'onShow' : '&' }
在link函数中,设置$scope.$watch,如下所示:
$scope.$watch(
function() { return $element.hasClass('ng-hide'); },
function(newVal, oldVal) { /* execute onShow here if newVal === false */ }
);
您也可以(我不建议这样做)将ng show更改为ng if。ng if从DOM中删除和添加元素,而不仅仅是隐藏它们。在这种情况下,每次元素重新出现时,链接函数都会触发。其他答案都是好的(并且是标准的),但是将重新对齐指令与该变量显示/隐藏的结果联系起来。例如,如果有两个嵌套的ng show,则会出现故障。在我看来,更好的解决方案是创建一个具有以下范围的on-show指令:
scope: { 'onShow' : '&' }
在link函数中,设置$scope.$watch,如下所示:
$scope.$watch(
function() { return $element.hasClass('ng-hide'); },
function(newVal, oldVal) { /* execute onShow here if newVal === false */ }
);
您也可以(我不建议这样做)将ng show更改为ng if。ng if从DOM中删除和添加元素,而不仅仅是隐藏它们。在这种情况下,每次元素重新出现时,链接函数都会触发。其他答案都是好的(并且是标准的),但是将重新对齐指令与该变量显示/隐藏的结果联系起来。例如,如果有两个嵌套的ng show,则会出现故障。在我看来,更好的解决方案是创建一个具有以下范围的on-show指令:
scope: { 'onShow' : '&' }
在link函数中,设置$scope.$watch,如下所示:
$scope.$watch(
function() { return $element.hasClass('ng-hide'); },
function(newVal, oldVal) { /* execute onShow here if newVal === false */ }
);
您也可以(我不建议这样做)将ng show更改为ng if。ng if从DOM中删除和添加元素,而不仅仅是隐藏它们。在这种情况下,链接f