Javascript 在Angularjs中ng show之后如何操作DOM?

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

我是安格拉斯的新手。我使用的是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">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