gpt4 book ai didi

AngularJS - 在工厂中通过 Restangular 使用 REST API

转载 作者:行者123 更新时间:2023-12-02 11:29:14 26 4
gpt4 key购买 nike

我了解如何在 Controller 中使用 Restangular,但我的想法是 Restangular 本质上是一种增强型 ORM。

ORM 不应该了解应用程序的状态。这是 Controller 的工作。

我还想重复使用对 ORM 的查询,因此,我认为应该在服务内部使用 Restangular。

我的问题是,我是一个 js/angularjs 和 Restangle 菜鸟,只有大约 2-3 个月的前端经验。

我的 Controller :

app.controller('AdminSupplierIndexController', 
['$scope', '$stateParams', '$state', 'Supplier',
function ($scope, $stateParams, $state, Supplier) {


$state.reload();

Supplier.getAll.then(function (suppliers) {
$scope.suppliers = suppliers;
});
}]);

app.controller('AdminSupplierDetailController',
['$scope', '$stateParams', 'Supplier',
function ($scope, $stateParams, Supplier) {

Supplier.getOne({ supplierId : $stateParams.supplierID}).then(function(supplier) {
$scope.supplier = supplier;
});
}]);

我的工厂

app.factory('Supplier', ['Restangular', function (Restangular) {
return {
getAll: Restangular.all('supplier').getList(),
getOne: Restangular.one('supplier', supplierId).get()
};
}]);

我的 Supplier.getAll 方法工作正常 - 我可以列出供应商工厂中的所有供应商。我的问题出在我的 Supplier.getOne 方法上。

问题1:如何将supplierId注入(inject)工厂?我收到 ReferenceError:supplierId 未定义问题 2:考虑到我必须为每个工厂创建单独的 C-R-U-D 方法(而 Restangular 已经提供了这些方法),我是否试图过度设计?

最佳答案

我知道这已经很旧了,但另一种方法是将其包装在函数中。这样,您可以在服务/方法中保留任何其他逻辑。

app.factory('Supplier', ['Restangular', function (Restangular) {
return {
getAll: Restangular.all('supplier').getList(),
getOne: function(supplierId) {
return Restangular.one('supplier', supplierId).get()
}
};
}]);

关于AngularJS - 在工厂中通过 Restangular 使用 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23801731/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com