我是AngularJS的新手。我正在建立一个电子邮件前端作为大学项目。
我有一个收件箱视图,可以从json文件中检索电子邮件。通过调用它可以正常工作:$ scope.emails = InboxService.query();. 当用户点击电子邮件时,他们会被重定向到我想要查看电子邮件的新页面,也可以从json文件(仅用于测试)。
控制器:
app.controller('InboxController', function ($scope, $location, InboxService, EmailService) {
//Make call to email by id
$scope.viewEmail = function(emailId)
{
//DOES NOT WORK
EmailService.find({id: emailId});
$location.path('inbox/email/' + emailId);
};
//Make call to inbox
$scope.emails = InboxService.query();
});
当用户点击电子邮件时,我想使用该ID来检索另一个json文件,并将其传递给单独的控制器以获取新页面。
这是我的EmailController:
app.controller('EmailController', function ($scope, InboxService, EmailService) {
$scope.emails = {};
//DOES NOT WORK
EmailService.getEmail(function(response){
$scope.emails.email = response;
});
});
这是电子邮件服务:不工作
app.factory('EmailService', function ($resource) {
var thisEmail = {};
thisEmail.find = function () {
thisEmail = $resource('json/message/:id.json', {}, {
get: {method: 'GET', params: {id: '@id'}}
})
},
thisEmail.getEmail = function () {
return thisEmail;
};
return thisEmail;
});
该服务不能满足我的需求。我想使用id检索json文件,然后能够在EmailController中访问该文件。
答案 0 :(得分:0)
尝试:
app.factory('EmailService', ['$resource',function ($resource) {
return $resource('json/message/:id.json', {}, {
get: {method: 'GET', params: {id: '@id'}}
});
}]);
在您的控制器中:
EmailService.get({id:emailId});
您应该使用内置状态提供程序https://docs.angularjs.org/api/ngRoute/service/ $ route 或https://github.com/angular-ui/ui-router/wiki而不是直接使用位置哈希。