【问题标题】:Can I use a controller in a page based on its controller ID? [duplicate]我可以根据控制器 ID 在页面中使用控制器吗? [复制]
【发布时间】:2017-03-29 01:49:02
【问题描述】:

我在项目的几个 HTML 页面中使用相同的控制器。 我的问题是每个页面都链接到另一个页面,而不是它们都使用相同的确切控制器,而是在每次打开下一页时复制它并且每个页面都使用自己的控制器,这意味着所有数据都保存在前一个控制器中将不适用于具有新复制控制器的下一页。

我最近承认每个控制器都有自己的 ID ($scope.$id),所以:

  • 我是否可以根据控制器 ID 请求要在 HTML 页面上使用的特定控制器?

  • 或者是否有替代选项将控制器的变量存储在另一个我可以使用它们而不用担心它们会在每个页面上重置的地方?

【问题讨论】:

  • 有几种方法(服务?)将数据从控制器传递到另一个控制器。
  • 您可以使用 ng-switch-view 切换视图,然后交换使用相同控制器的 html 页面。这样,您的父页面将包含控制器,其余所有 html 页面将根据具体情况进行更改条件......并且控制器对于所有页面保持相同......在父页面上。
  • 还有其他最适合的方式是 Angular 服务来存储数据并在需要时检索它们
  • @atulquest93 我认为您没有阅读完整的问题。他写过---或者是否有一个替代选项可以将控制器的变量存储在另一个我可以使用它们而不用担心它们会在每个页面上重置的地方?--这似乎是你主要关心的问题他面临的是,每当加载新视图时,控制器都会再次初始化,因此早期状态不可用,他无法使用该数据。

标签: javascript angularjs


【解决方案1】:
<div ng-controller="myCtrl">
            <div ng-switch on="condition">
                <div ng-switch-when="condition_output_1">
                   <div ng-include="'html_page_1_url.html'"></div>
                </div>
                <div ng-switch-when="condition_output_2">
                     <div ng-include="'html_page_1_url_2.html'"></div>
                </div>
            </div>
    </div>

现在,交换 html_page_1_url.htmlhtml_page_2_url.html 或任何 html

myCtrl 这对所有人来说都是一样的。


在控制器之间传输数据..您可以使用

  • $rootscope
  • services
  • localstorage

【讨论】:

  • 谢谢,我目前正在使用$rootScope,我想避免这种情况。我一定会看看其他选项!
猜你喜欢
  • 1970-01-01
  • 2021-08-09
  • 2017-09-30
  • 1970-01-01
  • 2011-07-04
  • 2014-08-10
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多