我的变量绑定到我的控制器中的this
,在我的路线指定中,我使用controllerAs: 'game'
。这允许我使用{{game.var}}
将它们包含在我的HTML中。有时,我绑定了我想要显示的对象,但这迫使我反复写{{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
发生变化时,这也会让我快速闪现第二个元素,因为在删除第一个元素之前加载新元素。
这个问题有更好的解决方案吗?
答案 0 :(得分:2)
Angular故意使用此上下文范围来避免父和子范围之间的混淆。如果您没有使用子范围,则可以完全跳过控制器作为语法,并将所有内容绑定到模型中的$scope
,这会将game.a
和game.b
变为仅a
您和视图中的b
。
如果您正在使用子范围,您仍然可以跳过controllerAs,但随后它会让视图中给定模型所属的控制器变得混乱。没有with
或using
语法,因此您需要在引用这些模型的任何地方声明绑定范围game.a
,childGame.a
,这可能过于冗长但至少是清楚。
另见this post。
关于flash问题,我会避免将ng-repeat用于语义目的。它的主要用例是显示一组结构相似的数据。