【发布时间】:2015-11-12 09:38:52
【问题描述】:
我正在处理 SharePoint 中的两个列表,因此在我的项目中我有三个控制器,一个主控制器 控制器,每个 SharePoint 列表一个。 我的清单是项目和任务。一个项目可以有多个任务。
当我想查看一个项目时,在 itemList 控制器中我这样做:
$scope.loadItem = function(id){
var promise = ItemService.getItem(id);
promise.then(function(item){
$scope.viewItem(item);
}, function(err){console.log(err);})
};
然后,当我想加载任务时,我在 taskList 控制器中有这个
$scope.loadTasks = function(parentId){
var promise = TaskService.getTasks(parentId);
promise.then(function(result){
console.log(result);
}, function(err){console.log(err);})
};
问题来了,当我加载我的项目 $scope.loadItem() 时,我还想加载相关的任务 到该项目,但该功能在另一个控制器中(以保持清洁)。
这就是我认为的样子:
$scope.loadItem = function(id){
var promise = ItemService.getItem(id);
promise.then(function(item){
$scope.loadTasks(item.Id);
$scope.viewItem(item);
}, function(err){console.log(err);})
};
但我只能通过两种方式实现这一点,那就是将我的 loadTasks 函数移动到 与 loadItems 函数或主控制器相同的控制器(因为它们都继承自该控制器), 但这会弄乱我的代码。
如何从我的 itemList 控制器调用 loadTasks 函数,而不会在错误的控制器中创建错误的函数,从而弄乱我的代码?
【问题讨论】:
-
也许创建一个服务来处理请求并且所有控制器都可以访问?
-
Adwaenyth 是对的。您应该使用服务。
标签: angularjs