gpt4 book ai didi

javascript - 在 ng-repeat 中嵌入 ngswitch 时出现 Angular 错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:48:43 25 4
gpt4 key购买 nike

是否可以在 ng-repeat 中嵌套 ng-switch-when

<div ng-controller="UserController">
<div ng-switch on="renderPath">
<div ng-repeat="route in routes">
<div ng-switch-when="route.path">
<div ng-include src="route.url"></div>
</div>
</div>
</div>
</div>

运行时出现如下异常:

    Error: Argument '?' is required
pa@http://ajax.googleapis.com/ajax/libs/angularjs/1.0.1/angular.min.js:16 ...

<!-- ngSwitchWhen: route.path -->

谢谢!

编辑

我想要完成的是以下内容

<div ng-switch on="renderPath">
<div ng-switch-when="path1">
<div ng-include src="url1"></div>
</div>
<div ng-switch-when="path2">
<div ng-include src="url2"></div>
</div>
<div ng-switch-when="path3">
<div ng-include src="url3"></div>
</div>
</div>
</div>

所以我想知道是否可以使用ng-repeat来帮助ne减少上面多余的HTML模板代码(ng-switch-when)。

最佳答案

不,你不能嵌套它们。 ng-switch 添加一个条目到 ng-controller $scope 上的 $$watchers 数组。 ng-repeat 为每次迭代创建一个新的子作用域。当遇到 ng-switch-when 时,(我在这里猜测)它在当前 $scope(现在是 ng-repeat 子作用域)中找不到任何 ng-switch 信息,所以它失败了。

更新:我对此进行了更多调查。错误发生在 1.0.3,而不是 1.0.4(但它也不适用于 1.0.4)。实际发生的是 ng-switch-when 作用域是 Controller 作用域的子作用域,而不是 ng-repeat 迭代子作用域。因此,route 对 ng-switch-when 指令不可见。这是 a fiddle使用 1.0.4——您可以单击一些链接来查看 Controller 、ng-repeat 和 ng-switch-default 范围。检查 ng-switch-default 作用域,您可以看到它的 $parent 是 Controller 的作用域,而不是 ng-repeat 作用域。

关于javascript - 在 ng-repeat 中嵌入 ngswitch 时出现 Angular 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14765364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com