1

我有一个应该显示面包屑导航的控件。它需要数据(路线和标题)才能正确显示导航。数据取自范围并在指令中使用。

导致我出现问题的原因是我在控件中使用了应该翻译标题的本地化指令。即使表达式 inng-show被评估为 false,也会调用此本地化指令。然后本地化指令中的翻译以异常结束,因为它试图翻译不正确的字符串(参见http://jsfiddle.net/F97wn/7/中的“localize”指令)。

这似乎很奇怪。我希望如果某些东西设置了内部内容是可见还是隐藏,那么首先评估它,然后评估内部内容..

好的,然后我发现ng-show它只设置了一些css属性,所以它对我来说毫无用处。

问题是:我应该如何解决这个问题 - 用什么代替ng-show

一个例子是http://jsfiddle.net/F97wn/7/

4

3 回答 3

2

您可以使用ngSwitch将 on 部分设置为“toshow()”,并将内部 ng-switch-when="true" 部分设置为该区域内的自定义指令。如果 toshow 的值不为真,这将不会执行自定义指令。

于 2012-12-12T13:27:30.320 回答
1

如果指令抛出异常,则可能应该通过以下方式之一将更多信息传递给指令,以便指令可以决定它是否具有执行其需要执行的操作所需的信息:

  1. 属性数据——例如,localize="..." show-me="..."
  2. 在与 ctrl 关联的范围内定义的东西——例如,$scope.showMe。根据您当前定义指令的方式,指令作用域将可以作为 scope.showMe 访问此属性。
  3. 或将服务(具有数据)注入指令 - 例如,directive('localize', function(myShowMeService) { ... }
于 2012-12-12T19:11:53.643 回答
0

您可能还想查看<ng-if>. ngIf 指令根据表达式中评估的“虚假”和“真实”值有条件地删除并重新创建 DOM 树 (HTML) 的一部分。它可能比<ng-show>您的需求更直观。

但是,它目前仅在 AngularJS 的不稳定版本中可用。如果您可以使用该版本的 AngularJS,您可以在此处找到有关它的更多信息。

于 2013-11-02T20:19:38.260 回答