gpt4 book ai didi

javascript - 在没有 Controller 的情况下,ng-init 真的是一种糟糕的设置变量的方法吗

转载 作者:行者123 更新时间:2023-11-30 12:24:48 25 4
gpt4 key购买 nike

我正在使用 ui-select 创建一个包含多个 View 的复杂页面。对于那些不知道的人来说,当用户选择一个选项卡(或者在我的例子中是一个下拉菜单)时,每个 View 都是通过 ajax 加载的。 View 传统上有自己的 Controller 和 html 模板。 View 继承它们所在的父页面的范围,但有自己的子范围。

在我的例子中,我们的一些 View 根本没有 Controller 。它们非常简单,我们只有 html 页面。问题是我希望他们能够在父页面范围内的配置对象上切换 bool 值,以关闭父页面上的某些控制字段。一切都已经存在,多个页面使用这些 View ,我只是想扩展它们以在父级上切换某些内容。

我可以通过三种方式做到这一点。我可以在我的 ui-router 中使用 resolve 方法在加载 View 时显式切换我想要的字段,但是我必须在每个 ui-router 中显式地为每个页面执行此操作;没有很酷的代码重用。

我可以让我的 ui-router 加载一个 Controller ,目前我没有 Controller ,而 Controller 可以做到这一点。但是,这意味着手动添加一个在我使用 View 的任何地方几乎都不需要的 Controller ,而且感觉不像是代码重用。

或者我可以使用 ng-init 让我的 View 在加载时明确设置我想要的值。对我来说,这感觉最干净、最简单,因为我还没有 Controller 。

然而,ng-init 是不受欢迎的,并且应该只用于别名。有没有比使用 ng-init 更简洁的方法?没有 Controller 的 View 真的很糟糕吗(更确切地说,他们仍然有父 Controller ,但在打开新 View 时不会重新加载)。

最佳答案

您没有为路由指定 Controller 这一事实不会改变任何东西。 View 有自己的作用域,因此可以使用路由 Controller 或没有自己作用域的指令(例如 ngInit)对其进行操作。

关于ngInit的著名评论的目的

The only appropriate use of ngInit is for aliasing special properties of ngRepeat, as seen in the demo below. Besides this case, you should use controllers rather than ngInit to initialize values on a scope

是为了让您远离“html 编程”。而且它没有太多意义,因为关注点分离不是 Angular 的优点之一。 Angular 从 html 属性评估代码的习惯以及核心指令如何使用它的方式促使您进一步违抗它。

关于javascript - 在没有 Controller 的情况下,ng-init 真的是一种糟糕的设置变量的方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29780057/

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