如何将服务器端属性连接到 angular 控制器

How do you connect server side properties into angular controller

我正在使用 yeoman meanjs 生成器,但有点困惑。在我的核心 Angular 控制器中,我有这样的设置:

angular.module('core').controller('HeaderController', ['$scope', 'Authentication', 'Menus',
    function($scope, Authentication, Menus) {
        $scope.authentication = Authentication;
        $scope.isCollapsed = false;
        $scope.menu = Menus.getMenu('topbar');

        $scope.toggleCollapsibleMenu = function() {
            $scope.isCollapsed = !$scope.isCollapsed;
        };

        // Collapsing the menu after navigation
        $scope.$on('$stateChangeSuccess', function() {
            $scope.isCollapsed = false;
        });
    }
]);

身份验证对象如何进入此处的范围?在哪里创建?

例如,如果我想添加一个对象,比如来自我的 MongoDb 的 foobar,将此数据从服务器大小导入 angular 控制器的标准做法是什么?

大卫

我没有使用过这个特定的生成器(我使用 angular-fullstack-gennerator)。但很可能是相似的。

您的似乎需要使用 CRUD sub generator。这将使您能够创建、读取、更新和删除。所以不管你怎么称呼它,你都会将它导入到你需要它的控制器中。

如果您将其命名为 CRUDserverstuff,则可以像下面的行一样导入它:

angular.module('core').controller('HeaderController', ['$scope', 'Authentication', CRUDserverstuff, 'Menus',
function($scope, Authentication, CRUDserverstuff, Menus) { 
//use it as you would any other objecte here
CRUDserverstuff.post(myData);
}

我也是 angular 的新手,所以我不确定是否需要或什至应该像在导入行上那样放置两次。这让我有点困惑。

如果您不习惯使用 MEAN 堆栈生成器,我发现 fullstack 对初学者非常友好。要仔细学习的一件事是文件结构。全面披露:我是 angular 和 MEAN 堆栈的新手。这也是我在这里的第一个回答所以你去吧。

身份验证是服务文件夹中定义的一项服务,它位于您所在的控制器文件夹旁边。这是服务定义:

angular.module('users').factory('Authentication', [
function() {
    var _this = this;

    _this._data = {
        user: window.user
    };

    return _this._data;
}
]);

您在这里看到的是在控制器中引用服务的标准方式。在 angular 中,您通常拥有具有业务层逻辑的服务,包括通过 restful 协议与后端对话的逻辑。

要引用它,您只需在控制器定义中提供服务的名称,然后使用依赖项注入进行该服务引用。有一个在后台运行的注入器通过该名称查找服务,并创建对它的引用。

所以您创建的任何其他服务,就像创建此身份验证服务一样,然后以类似的方式将服务名称放入控制器定义中以使用该服务。

现在引用 MongoDb 数据库的东西在这里没有意义,因为这是堆栈的前端部分。此代码在客户端浏览器而不是服务器上执行。

MongoDb 数据库位于服务器上,您在此堆栈的应用程序文件夹中看到的所有代码都是服务器端代码。 public文件夹中的所有代码都是前端代码。希望这有帮助。