【问题标题】:Is it better to use 2 controllers for the same page's two parts对同一页面的两个部分使用 2 个控制器是否更好
【发布时间】:2026-01-21 13:55:02
【问题描述】:

我有一页有两个部分,两个部分在某个地方相互依赖。所以我的问题是我是否需要为此创建 2 个不同的控制器。(如果是,那么我将如何在它们之间共享 $scope)或者只为两者使用一个控制器。

【问题讨论】:

  • 为什么要考虑使用 2 个控制器?
  • 用于关注点分离,因为我们有两个独立的复杂 UI 屏幕。
  • 我认为您需要 3 个控制器。一位家长,另外两位家长。
  • “我需要吗” ...不,这是主观的。如果您确实想将它们拆分或嵌套在父控制器中,可以通过服务共享方法和数据
  • 最好为 1 个页面使用 1 个控制器,这将易于使用且易于维护。如果有 2 个不同的页面,那么使用不同的控制器是有意义的。

标签: javascript jquery angularjs angularjs-scope


【解决方案1】:

你可以使用任何一个。

一个控制器,范围可用于页面的两个部分。

两个控制器并使用一个服务。您需要签入 .service 和 .factory 以在控制器之间共享数据。服务示例:

.factory('storageService', function () {
    var vars = [];
    var storageService = {};

    storageService.set = function (key, value) {
        vars[key] = value;
    };

    storageService.get = function (key) {
        return vars[key];
    };

    return storageService;
})

还有一些指令,你可以将任何你想要从 $scope 传递到指令中。在您的指令的 html 中,您将设置一个名为 scope 的属性并将其传递给范围中定义的一些变量,例如...

<some-directive scope="data"></some-directive>

.directive('someDirective', ['$rootScope', 'storageService', function ($rootScope, storageService) {
    return {
        restrict   : 'AE',
        scope      : {
            scope: '=' 
        },
        replace    : true,
        templateUrl: 'some/path',
        link       : function ($scope, element, attr) {
            $scope.setResetValue = function(value){
                storageService.set('resetValue', value);
            }
        }

    };
}])

【讨论】:

    最近更新 更多