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

Angular-使用一个控制器处理多个HTTP请求中的许多一致视图

苍轶
2023-03-14
问题内容

我有一个简单的Angular
JS场景。我在一个视图中显示了一个专家列表,该列表包含编辑专家的操作,该操作将在另一视图中完成。这些视图来自服务器,并且不在一个文件中。它们不会一起加载。

<!-- experts.html -->
<div ng-controller='expertController'>
    <!-- showing the list of experts here -->
</div>

在服务器上的另一个文件中,我有:

<!-- expert.html -->
<div ng-controller='expertController'>
    <!-- a form to edit/add an expert -->
</div>

我的控制器是:

app.controller('expertController', function ($scope) {
    $scope.getExperts = function () {
        _.get('/expert/getexperts/', null, function (data) {
            $scope.$apply(function () {
                $scope.experts = data;
            });
        });
    };

    $scope.editExpert = function (index) {
        _.get('/expert/getexpert/', { id: $scope.experts[index].Id }, function (data) {
                $scope.$apply(function () {
                    $scope.expert = data;
                });
         });
    };
});

但是,任何数据都不会显示在编辑表单中。我使用Batarang检查了范围,但expert不会显示对象。

问题似乎是我在一个控制器上使用了两个(可能有两个以上)视图。但是,正如我在SO上阅读过其他一些问题一样,最好的做法似乎是每个HTML视图有一个控制器。

但是,我认为让一个expertController人执行所有CRUD操作以及与之相关的其他操作更加一致和一致expert。我认为expertEditController编辑表单和expertListController列表HTML
有点难看。

最佳做法是什么?我如何拥有一个连贯且在语义上命名的控制器,同时支持许多视图。在到目前为止所见的任何MVC框架中,通过一个控制器支持许多视图都是一种例行程序。


问题答案:

当然,您可以将许多views相同的东西一起使用controller。例如:用于编辑和添加新项目。

但是您必须记住,每次加载视图时, 都会初始化控制器 并重新$scope注入新的 控制器

在您的情况下,最好只使用两个单独的控制器(一个用于一个experts,一个用于expert),并使用(可选)一些服务在它们之间进行通信,并可能提供某种缓存html" target="_blank">机制。

更新 如果要在控制器之间提供某些通用/共享功能,最好的方法是创建然后创建inject单独的服务。它保持代码干燥。



 类似资料:
  • 目前我正在研究聊天服务器/客户端项目。我正在努力使用 select 处理多个请求,我的服务器脚本使用 select 模块,但客户端脚本没有。结果是,当用户输入消息时,其他客户端必须编写自己的消息才能通读对话。我已经在网上搜索了很多示例,但只能找到带有 sys.stdin 的代码片段,这不是我想要的。 我很高兴收到任何指示/解释。 服务器代码: 客户端代码:

  • 问题内容: 如何在一个HTTP请求中下载多个文件?我的意思是,当您有多个附件时,选择要下载的内容,然后按下载,这样便可以自动下载它们,而不必手动单击每个附件。 我正在使用PHP作为服务器端加密。 问题答案: 它 是 可以发送一个在HTTP响应多: 通常,HTTP与任何其他媒体类型一样对待多部分消息主体:严格作为有效负载。[…] HTTP用户代理应遵循与MIME用户代理在收到多部分类型时相同或相似的

  • 问题内容: 我的Flask应用程序必须进行大量计算才能获取特定页面。在Flask执行该功能时,其他用户无法访问该网站,因为Flask忙于进行大量计算。 有什么方法可以使我的Flask应用程序接受来自多个用户的请求? 问题答案: 是的,将应用程序部署在其他WSGI服务器上,请参阅Flask部署选项文档。 Flask随附的服务器组件实际上仅用于开发应用程序时;即使可以将其配置为处理并发请求(从Flas

  • 表模式如下: 表A的主键[ID1(分区键)id2(分区键)id3(群集键)] 表B主键[ID1(分区键)id2(分区键)状态(聚类键)id3(聚类键)] 那么在卡桑德拉我该怎么解决呢?

  • 问题内容: 我正在尝试在具有多个视图控制器的Swift应用程序中使用。我的情节提要板(和)上有2个视图控制器,它们都嵌入各自的导航控制器中。它们具有情节提要标识符“ ”和“ ”。我在情节提要上还具有一个带有控制器的页面视图控制器,并将导航设置为水平和过渡样式以在属性检查器中滚动。是应用程序的根视图控制器 我想成为页面视图控制器的第一页,所以我这样编写了它的类: 的文件如下所示: 但是,当我运行我的

  • 问题内容: 我有一个由一个控制器控制的fxml文件。我想将控制器分成多个部分,就像放置在一个控制器中会产生很长的代码一样。不幸的是,fx:controller只能放在根目录中。我对如何分离控制器有什么建议吗? 问题答案: 我建议创建自定义控件-使用几个较小的FXML文件,而不是一个大FXML文件。 这是本教程: http://docs.oracle.com/javafx/2/fxml_get_st