gpt4 book ai didi

angularjs - Angular - 使用一个 Controller 处理多个 HTTP 请求的多个连贯 View

转载 作者:行者123 更新时间:2023-12-04 00:21:45 25 4
gpt4 key购买 nike

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

<!-- 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>

我的 Controller 是:
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不会显示对象。

问题似乎是我将一个 Controller 用于两个(并且可选地超过两个) View 。但是,正如我在 SO 上阅读的其他一些问题一样,似乎最好的做法是为每个 HTML View 设置一个 Controller 。

但是,我认为拥有一个 expertController 会更加连贯和一致。执行所有 CRUD 操作,以及与 expert 相关的其他操作.我觉得有 expertEditController有点丑用于编辑表格和 expertListController对于列表 HTML。

这里的最佳做法是什么?我怎样才能有一个连贯且语义命名的 Controller ,同时支持许多 View 。在我迄今为止看到的任何 MVC 框架中,通过一个 Controller 支持多个 View 都是例行公事。

最佳答案

当然你可以使用很多viewscontroller .
例如:用于编辑和添加新项目。

但是您必须记住,每次加载 View 时 Controller 已初始化 和新鲜的$scope被注入(inject)。

在您的情况下,最好只使用两个单独的 Controller (一个用于 experts 和一个用于 expert )并使用(可选)一些服务在它们之间进行通信,并可能提供一些缓存机制。

更新 如果您想在 Controller 之间提供一些通用/共享功能,最好的方法是创建,然后 inject一项单独的服务。它使代码保持干燥。

关于angularjs - Angular - 使用一个 Controller 处理多个 HTTP 请求的多个连贯 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20312226/

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