需要有关 Angular 工厂的帮助
Need help on Angular Factory
嗨,SO angular 社区!
我很困惑,我想我已经理解了工厂的目的和概念,但似乎不是...
这是我的问题(对你来说肯定很简单):
我想使用我的 REST API(完美运行)使用 Angular 和 .factory ...
rest.js
var app = angular.module('urlShortener', ['ngRoute', 'ngResource']);
app.factory('API', ['$resource',
function($resource){
return $resource('/link'});
}],{
get: {method:GET},
post: {method:POST},
put: {method:PUT},
delete: {method:DELETE},
}
);
app.controller('GetAll', function ($scope) {
$scope.links = API.get();
});
index.ejs
<div ng-controller="GetAll">
<ul>
<li ng-repeat="link in links">
<p>{{link.itemId}} --> {{link.url}}</p>
</li>
</ul>
</div>
不工作... 2 小时我正在咨询 Angular API,但没有解决方案:/
请帮帮我,我在浪费时间:'(
\\\\ 解决方案 ////
rest.js
app.factory('API', ['$resource', function($resource) { return $resource('/link'); }]);
app.controller('GetAll', ['$scope', 'API', function ($scope, API) {
API.query().$promise.then(function(links) {
$scope.links = links;
});
}]);
感谢 :)
如果您想执行 api 个请求,请使用 $http
这是我在我的应用程序中使用的一段代码:
angular
.module('myApp')
.factory('apiFactory', apiFactory);
function apiFactory($http) {
return {
getDataFromApi: getDataFromApi,
};
function getDataFromApi(url) {
return $http({
method: 'GET', // or post or whatever
url: url,
headers: {
...
}
})
.then(success)
.catch(fail);
function success(response) {
return response.data;
}
function fail(response) {
// handle error
}
}
}
您不能只将 $resource 实例分配给 $scope.links,您需要在底层承诺解析时执行此操作:
app.controller('GetAll', ['$scope', 'API', function ($scope, API) {
API.get().$promise.then(function(links) {
$scope.links = links;
});
}]);
您必须在控制器中注入 "API"。
app.controller('GetAll', function ($scope, API) {
$scope.links = API.get();
});
这是您要找的吗?
API For Resources
services.factory('Api', ['$resource',
function($resource) {
return {
Recipe: $resource('/recipes/:id', {id: '@id'}),
Users: $resource('/users/:id', {id: '@id'}),
Group: $resource('/groups/:id', {id: '@id'})
};
}]);
function myCtrl($scope, Api){
$scope.recipe = Api.Recipe.get({id: 1});
$scope.users = Api.Users.query();
...
}
如果你的休息服务returns你需要使用查询功能的对象数组。
$scope.links = API.query(); // instead of API.get()
如果你需要在 promise returns 时做任何其他事情,使用这样的东西:
API.query().$promise.then(function(result){
$scope.links = result;
// any other operation related to the request here
});
嗨,SO angular 社区!
我很困惑,我想我已经理解了工厂的目的和概念,但似乎不是...
这是我的问题(对你来说肯定很简单):
我想使用我的 REST API(完美运行)使用 Angular 和 .factory ...
rest.js
var app = angular.module('urlShortener', ['ngRoute', 'ngResource']);
app.factory('API', ['$resource',
function($resource){
return $resource('/link'});
}],{
get: {method:GET},
post: {method:POST},
put: {method:PUT},
delete: {method:DELETE},
}
);
app.controller('GetAll', function ($scope) {
$scope.links = API.get();
});
index.ejs
<div ng-controller="GetAll">
<ul>
<li ng-repeat="link in links">
<p>{{link.itemId}} --> {{link.url}}</p>
</li>
</ul>
</div>
不工作... 2 小时我正在咨询 Angular API,但没有解决方案:/
请帮帮我,我在浪费时间:'(
\\\\ 解决方案 ////
rest.js
app.factory('API', ['$resource', function($resource) { return $resource('/link'); }]);
app.controller('GetAll', ['$scope', 'API', function ($scope, API) {
API.query().$promise.then(function(links) {
$scope.links = links;
});
}]);
感谢
如果您想执行 api 个请求,请使用 $http
这是我在我的应用程序中使用的一段代码:
angular
.module('myApp')
.factory('apiFactory', apiFactory);
function apiFactory($http) {
return {
getDataFromApi: getDataFromApi,
};
function getDataFromApi(url) {
return $http({
method: 'GET', // or post or whatever
url: url,
headers: {
...
}
})
.then(success)
.catch(fail);
function success(response) {
return response.data;
}
function fail(response) {
// handle error
}
}
}
您不能只将 $resource 实例分配给 $scope.links,您需要在底层承诺解析时执行此操作:
app.controller('GetAll', ['$scope', 'API', function ($scope, API) {
API.get().$promise.then(function(links) {
$scope.links = links;
});
}]);
您必须在控制器中注入 "API"。
app.controller('GetAll', function ($scope, API) {
$scope.links = API.get();
});
这是您要找的吗? API For Resources
services.factory('Api', ['$resource',
function($resource) {
return {
Recipe: $resource('/recipes/:id', {id: '@id'}),
Users: $resource('/users/:id', {id: '@id'}),
Group: $resource('/groups/:id', {id: '@id'})
};
}]);
function myCtrl($scope, Api){
$scope.recipe = Api.Recipe.get({id: 1});
$scope.users = Api.Users.query();
...
}
如果你的休息服务returns你需要使用查询功能的对象数组。
$scope.links = API.query(); // instead of API.get()
如果你需要在 promise returns 时做任何其他事情,使用这样的东西:
API.query().$promise.then(function(result){
$scope.links = result;
// any other operation related to the request here
});