在Angular Controller中解析数据

时间:2014-03-30 06:41:08

标签: javascript angularjs mean-stack

我对Angular很陌生,而且我已经在这个问题上绕圈了一段时间了。

首先,我使用的是使用Angular UI路由器的mean.io的MEAN堆栈。

我的数据库中有一个Post模型,可以为其分配一个类别ID。

当我创建新帖子时,我想从数据库加载现有类别并将其显示在选择框中。

从我所看到的我需要使用resolve,首先它感觉在resolve属性中的resolve属性中存在逻辑并且在一个名为config.js的文件中 - 到目前为止我已经将调用放到了服务中在那里,我使用以下代码返回类别:

.state('create post', {
    url: '/posts/create',
    templateUrl: 'views/posts/create.html',
    controller: 'PostsController',
    resolve: {
      loadCategories: function (Categories) {
        Categories.query(function(categories) {
            return categories;
        });
      }
    }
})

第一个问题是我无法访问控制器或视图中返回的数据。

其次我只想加载属于某个组织的类别。我将为每个用户分配一个组织ID,以便当我在config.js时如何访问当前已登录的用户 - 再次这不是正确的做这种逻辑的地方。

任何帮助都会非常感激。

由于

2 个答案:

答案 0 :(得分:1)

config.js:

注册后状态:

.state('post', {
        url: '/posts/create',
        templateUrl: 'views/posts/create.html',
        controller: 'PostsController',
        resolve: PostsController.resolve
      })

注册帖子控制器:

.controller({
     PostsController: ['$scope', 'loadCategories', PostsController],
     ...
    })

控制器功能:

function PostsController($scope, loadCategories){
    $scope.categories = loadCategories;
};

PostsController.resolve = {
    loadCategories: ['dependencies', function(dependencies){
       return dependencies.query(...)
    }]
};

Angular管理您的依赖注入

答案 1 :(得分:0)

假设类别是角度resource,您应该能够

loadCategories: function (Categories) {
    return Categories.query();
}

然后在你的控制器中:

.controller('PostsController', function ($scope, loadCategories) {
     $scope.categories = loadCategories;
});

好的,阅读你的评论,听起来你会遇到一些问题,因为你想将它注入控制器,但仅限于某些状态。你可以尝试:

.state('create post', {
  url: '/posts/create',
  templateUrl: 'views/posts/create.html',
  controller: 'PostsController',
  data: {
    categories: Categories.query()
  }
})

然后

.controller('PostsController', function ($scope, $state){
  console.log($state.current.data.categories);
});

哪个应该有用......