我对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时如何访问当前已登录的用户 - 再次这不是正确的做这种逻辑的地方。
任何帮助都会非常感激。
由于
答案 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);
});
哪个应该有用......