当前位置: 首页 > 面试题库 >

单页应用程序中带有AngularJS的多个控制器

唐健
2023-03-14
问题内容

我想知道如何在单个页面应用程序中使用多个控制器。我试图找出答案,但发现的问题与我的非常相似,但是有很多不同的答案可以解决一个特定的问题,最终您不会在单个页面应用程序中使用多个控制器。

那是因为在单个页面上使用多个控制器并不明智吗?还是只是不可能?

假设我已经在主页上有一个踢屁股图像轮播控制器,但是随后我学习了如何(比如说)使用模态,为此我还需要一个新的控制器(或者其他我需要控制器的东西)。那我该怎么办?

我看到了其他问题的一些答案,他们问的几乎和我差不多,而人们回答“ * OMG。为什么还要这么做,只要这样做…”。

最好的方法是什么,或者您怎么做?

编辑

你们中的许多人都回答只是声明两个控制器,然后使用ng-controller对其进行调用。我在下面使用这段代码,然后使用ng-
controller调用MainCtrl。

app.config(function($routeProvider, $locationProvider) {                        
  $routeProvider                                                                
       .when('/', {                                            
         templateUrl: "templates/main.html",                                               
         controller:'MainCtrl',                                
        })                                                                      
        .otherwise({                      
            template: 'does not exists'   
        });      
});

如果不使用ng-controller,为什么还要在这里设置控制器?这就是让我困惑的地方。(我想您不能以这种方式添加两个控制器…)


问题答案:

问题是什么?要使用多个控制器,只需使用多个ngController指令:

<div class="widget" ng-controller="widgetController">
    <p>Stuff here</p>
</div>

<div class="menu" ng-controller="menuController">
    <p>Other stuff here</p>
</div>

像往常一样,您将需要在应用程序模块中提供控制器。

做到这一点的最基本的方法可能像声明这样的控制器功能一样简单:

function widgetController($scope) {
   // stuff here
}

function menuController($scope) {
   // stuff here
}


 类似资料:
  • 我在Symfony2中有REST API,在AngularJS中有客户端应用。我有用户,用户有Symfony2角色(ROLE_ADMIN,ROLE_USER)。 在security.yml是部分,但在这里我只能设置Symfony2路由路径。 如何阻止对路径的访问,例如: 对于角色为_USER或匿名的用户? (#/某物-是Angular url)

  • 问题内容: 我正在用Java和gradle编写控制台应用程序。我正在使用插件,并在中正确配置了必填字段。 在我的主班里,我与有联系。这是问题所在:当我在项目目录中运行时,阅读器不会等待控制台输入。而是在第一次通话时返回。对于我在做什么,这种行为是不可取的。 解决办法是什么?是否有用于gradle的单独的控制台应用程序插件,或者我需要以某种方式调整插件以适合我的需要? 问题答案: 默认情况下,gra

  • 问题内容: 我有一个用例,需要加载单独的角度应用程序。 基于几个堆栈溢出问题和这个google线程,它是可行的。但是,我无法使其正常工作。 查看文档: http://docs.angularjs.org/api/angular.bootstrap 看来您需要提供该元素(在该元素上获得句柄的正确方法是什么?),然后如何将其绑定回config,controller等。这如何与路由一起使用?IE碰撞如何

  • 问题内容: 我正在尝试建立一个视图-我设置了两个控制器进行练习,一个是HeaderCtrl,其中包含一些数据(网站标题,标题背景等),另一个应该具有页面的主要内容- MainCtrl。 在定义路线时,我这样做是: 这工作得很好,但是我想要为此指定多个参数,如下所示: 这行不通,所以我猜这不是做到这一点的方法。我实际上要问的是-您可以在$ routeProvider中指定多个控制器吗?还是构建此视图

  • 问题内容: 我们正在寻找构建正在创建的应用程序前端的选项,并正在尝试评估一种对我们有用的工具,并为我们提供前进的最佳平台。 这是一个Node.js项目。我们最初的计划是使用Express并沿这条路线走,但是我们决定在开始此阶段之前,最好回顾一下那里的内容。我们的应用程序有几个我们认为不适合单页模型的领域,因为它们是从应用程序的角度关联的,而不是从一个角度来看的。 我们已经看到了一些可用于构建客户端

  • 问题内容: 我有一个使用angularJS的单页Web应用程序。我需要打印某个页面的div。我尝试了以下方法: 该页面包含少量div(print.html) 控制器具有以下脚本: 此代码可打印所需的div,但存在问题。该语句代替了整个应用程序的主体,因为它是SPA。因此,当我刷新页面或再次单击“打印”按钮时,页面的全部内容将被删除。 问题答案: