gpt4 book ai didi

javascript - 在 Angular 中设置上下文范围

转载 作者:行者123 更新时间:2023-12-02 14:00:15 26 4
gpt4 key购买 nike

我将变量绑定(bind)到 Controller 中的 this,并在路线指定中使用 controllerAs: 'game'。这允许我使用 {{game.var}} 将它们包含在我的 HTML 中。有时,我绑定(bind)想要显示的对象,但这迫使我重复编写 {{game.object.a}}, {{game.object.b}}, {{game.object.c}}.

在之前使用 Meteor 的项目中,我可以使用 with 关键字设置数据上下文。

{{#with object}}
{{a}}
{{b}}
{{/with}}

但我在 Angular 中没有看到类似的功能。我能做的最接近的工作是添加属性 ng-repeat="object in [game.object]"。这可行,但不太语义化。这也导致我在 game.object 更改时快速闪现第二个元素,因为新元素会在第一个元素被删除之前加载。

这个问题有更好的解决方案吗?

最佳答案

Angular 有意使用此上下文作用域来避免父作用域和子作用域之间的混淆。如果您不使用子作用域,则可以完全跳过 Controller 作为语法,只需将所有内容绑定(bind)到模型中的 $scope ,这会将 game.a >game.b 到 View 中的 ab

如果您使用子作用域,您仍然可以跳过controllerAs,但是 View 中给定模型所属的 Controller 会变得困惑。没有 withusing 语法,因此您需要声明绑定(bind)范围 game.achildGame.a您在任何地方都会引用这些模型,它们可能过于冗长,但至少是清晰的。

参见this post ,还有。

关于 flash 问题,我会避免使用 ng-repeat 来实现语义目的。它的主要用例是显示一组类似结构的数据。

关于javascript - 在 Angular 中设置上下文范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40442210/

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