在ng-click事件中重新加载ng-include模板

4

我有一个链接列表,当我点击每个链接时,我使用ng-include调用一个文件。我想要的就是在重新点击这些文件时重新加载它们。 这是链接列表:

<ul class="list-group  gray-bg">
   <li class="list-group-item link" ng-click="show=1">something</li>
   <li class="list-group-item link" ng-click="show=1">something</li>
</ul>

每次点击时更改的部分如下所示:

<div ng-show="show==1">
    <div ng-include src="'templates/feature-descriptions/shop.phtml'"></div>
</div>
<div ng-show="show==2">
    <div ng-include src="'templates/feature-descriptions/no-credit.phtml'"></div>
</div>

1
你通过重新加载它来实现什么?这样做没有意义。你的模板上有控制器吗? - Pankaj Parkar
不,我没有任何控制器。我使用了一些动画(使用animation.css),当我重新点击那些链接时,这些动画不会起作用,因为所有这些文件都已经重新加载了。(也许我在错误地使用重新加载。我想刷新那些部分) - Shadi Hariri
3
针对你的情况可能的解决方案是使用 ng-if,例如 `<div ng-if="show==1"> <div ng-include src="'templates/feature-descriptions/shop.phtml'"></div></div>,然后你的 ng-click应该是ng-click="show=0;show=1"。将 show设为0只是为了虚拟更改以重新绘制ng-if` 的 div。 - Pankaj Parkar
成功了!解决方案简单易行,效果很好。谢谢你。 - Shadi Hariri
1
我已经添加了一个答案,请看一下。它有更多的解释,请用赞标记为正确答案。谢谢 :) - Pankaj Parkar
1个回答

2

在你的情况下,你可以使用ng-if指令而不是ng-show指令来使你的div具有动画效果,因为它将根据ng-if指令中给出的表达式添加或删除。

如果您想要刷新ng-include元素,我建议您首先将虚拟值设置为show作用域变量,然后再给出实际值以使该div会像执行ng-click="show=0;show=1;"一样被删除和添加。

标记

<ul class="list-group  gray-bg">
   <li class="list-group-item link" ng-click="show=0;show=1;">something</li>
   <li class="list-group-item link" ng-click="show=0;show=1;">something</li>
</ul>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接