我正在使用 ui-select 创建具有多个视图的复杂页面。对于那些不知道当用户选择一个选项卡(或者在我的情况下是一个下拉菜单)时每个视图都是通过 ajax 加载的人。传统上,视图有自己的控制器和 html 模板。视图继承了它们所在的父页面的范围,但有自己的子范围。
就我而言,我们的一些视图根本没有控制器。它们非常简单,我们只有它们的 html 页面。问题是我希望他们能够在父页面范围内的配置对象上切换布尔值,以关闭父页面上的某些控制字段。一切都已经存在,多个页面使用这些视图,我只是想扩展它们以在父级上切换某些内容。
我可以通过三种方式做到这一点。我可以在我的 ui-router 中使用 resolve 方法在加载视图时显式切换我想要的字段,但是我必须在每个 ui-router 中显式地为每个页面执行此操作;没有很酷的代码重用。
我可以让我的 ui-router 加载一个控制器,目前我没有控制器,而控制器可以做到这一点。然而,这意味着手动添加一个在我使用视图的任何地方都不需要的控制器,并且再次感觉不像代码重用。
或者我可以使用 ng-init 让我的视图在加载时明确设置我想要的值。对我来说,这感觉最干净、最简单,因为我还没有控制器。
但是, ng-init 不受欢迎,应该只用于别名。然后使用 ng-init 是否有更清洁的方法?没有控制器的视图真的很糟糕吗(更准确地说,他们仍然有父控制器,但是在打开新视图时不会重新加载)。