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



我正在使用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;
        });
    }
]);

Authentication对象是如何进入这里的作用域的?在哪里创建的?

例如,如果我想添加一个对象说foobar这是从我的MongoDb得到这个数据到角控制器从服务器大小的标准做法是什么?

大卫

身份验证是在services文件夹中定义的服务,该文件夹与您所在的控制器文件夹相邻。服务定义如下:

angular.module('users').factory('Authentication', [
function() {
    var _this = this;
    _this._data = {
        user: window.user
    };
    return _this._data;
}
]);

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

要引用它,只需在控制器定义中给出服务的名称,然后使用依赖注入进行服务引用。有一个注入器会在后台运行,以该名称找到该服务,并创建对它的引用。

所以你创建的任何其他服务,就像这个认证服务一样,然后把服务的名称以类似的方式放在控制器定义中,以使用该服务

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

MongoDb数据库位于服务器上,您在此堆栈中的app文件夹中看到的所有代码都是服务器端代码。公共文件夹中的所有代码都是前端代码。

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

您的代码似乎需要使用CRUD子生成器。这将使您能够创建,读取,更新和删除。所以不管你叫它什么你都会把它导入到你需要的控制器中

如果您将其命名为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堆栈生成器,我发现完整堆栈生成器对初学者非常友好。需要仔细学习的一件事是文件结构。全面披露:我是angular和MEAN栈的新手。这也是我在这里的第一个答案,好了

相关内容

  • 没有找到相关文章

最新更新