我创建了一个 BookService
用于存储 (add
)、获取 (getAll
) 和删除 (remove
) 书籍。现在我想在我的 Controller 中使用这个 BookService 来发布一些我以后可以在我的 View 中使用的方法。我的 Controller 如下所示:
app.controller('BookController', ['BookService', '$scope', function(BookService, $scope) {
$scope.addBook = function() { BookService.add(); }
$scope.getAllBooks = function() { BookService.getAll(); }
$scope.removeBook = function() { BookService.remove(); }
}]);
如您所见, Controller 只是将方法调用转发给服务的代理。这通常是不好的做法吗?使用 Angular.js
是否有更好的方法来解决这个问题?在我看来,在没有 Controller 的情况下直接从 View 调用服务似乎是一个更大的问题。
最佳答案
最佳实践
据我所知,这是非常好的做法,我假设您在这里使用 $scope
将这些服务绑定(bind)到按钮或类似的东西。使用工厂或服务的想法是创建一些组织良好的可重用代码,然后您可以像您所做的那样在 Controller 中实例化这些代码。
Controller 可能会变得相当复杂,因此最好将基本功能转移到您的服务中。在您的情况下,您有一个相对简单的 Controller ,因此您可能看不到以这种方式编码的好处。但我向您保证,随着您的代码库的增长,您将需要像这样编写代码以保持可读性。
注意
作为额外说明,我添加了一个数据处理过程,您可能会用它来举例说明数据库请求
database > API > service/factory > controller > view
当从数据库中请求某些东西时,这将是正确的路径。
关于javascript - 使用服务时 Controller 中的 Angular.js 方法重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32411807/