从一个JSON资源中获取vaules,并使用它使用AngularJS构建另一个$resource

从一个JSON资源中获取vaules,并使用它使用AngularJS构建另一个$resource,json,angularjs,angularjs-resource,Json,Angularjs,Angularjs Resource,基本上,我有一个SPA,它通过JSON从Rails站点提供其内容。现在我有一个工厂,它加载了一个事件列表,其格式类似于: { id: 35987, class: "Event", event_id: 35987, name: "New Event", preview: "Description of the event goes here!" }, { id: 35989, class: "Event 2", event_id: 35989, name: "Event for Something

基本上,我有一个SPA,它通过JSON从Rails站点提供其内容。现在我有一个工厂,它加载了一个事件列表,其格式类似于:

{
id: 35987,
class: "Event",
event_id: 35987,
name: "New Event",
preview: "Description of the event goes here!"
},
{
id: 35989,
class: "Event 2",
event_id: 35989,
name: "Event for Something else",
preview: "Description of the event goes here again!"
}
然后,我在一个视图上显示前5个事件,其中一个控制器从资源中获取前5个事件

  .controller('UpcomingCtrl', function($scope, upcomingFactory, localUserFactory) {

    localUserFactory.get(function (user) {
        upcomingFactory.query({channelID: user.channel_id}, function(data){
           $scope.upcomingEvents = data;
        });
    });

  })
对我来说,这就是棘手的部分。我希望用户能够单击这5个结果中的一个,然后进入相应事件的详细信息页面。此详细事件的信息来自一个单独的JSON文件,该文件由事件ID使用以下结构{{event_ID}}.JSON标记

这意味着我需要以某种方式将事件列表中的事件ID传递给资源,并根据用户单击的URL为events.json文件填写{event_ID}。这意味着路由也必须是动态的,这样当您单击链接时,任何事件都可以变成动态的


我希望这是有意义的

向url映射器注册您的资源:

$resource('testsite.com/events/:id);
您可以通过向资源get调用提供一个对象来使用该url映射:

myResource.get({id: oneId}).then(... 
该对象中未在资源url中定义的任何其他属性将作为请求url末尾的querystring参数

编辑:

我想我误解了你的问题。您可以使用我上面描述的相同url映射注册您的应用程序路由。当用户单击事件时,请执行以下操作:

$location.path(route + '/' + eventId);
在detail controller上,注入$routeParams服务并将事件的id作为属性访问,例如:

$scope.eventId = $routeParams.id // or instead of id, the name of the url mapping you registered in your routes ('events/:nameOfVariable') 

我想我还是有点困惑。通过执行
.factory('eventFactory',function($resource){return$resource('http://www.test.com/api/events/:eventID.json“,{eventID:'@eventID'},{query':{method:'GET',isArray:false}}});})
在那里设置了id参数,但是我如何从页面上的其他资源中获取这个id并将其准确地推送到这个资源中呢?还有,location.path是否只是使用了ngclick?也许我误解了你的问题。您想将用户重定向到事件的详细视图,对吗?所以你想让用户去像angular site.com/eventDetail/{{{eventId}}这样的地方,对吗?