Javascript AngularJS从索引到详细页面的动态路由

Javascript AngularJS从索引到详细页面的动态路由,javascript,angularjs,Javascript,Angularjs,我正在尝试从项目的索引列表路由到一个页面,该页面将显示该项目的详细视图 在我的索引视图中,我有一个表,它遍历数据库中保存的所有项 在“操作”列下有一个按钮,可以使用ng click=“go('events/show')” 在my routes.js中,我有: .whenAuthenticated('/events/show', { templateUrl: 'views/eventShow.html', controller: 'eventShowCtrl'

我正在尝试从项目的索引列表路由到一个页面,该页面将显示该项目的详细视图

在我的索引视图中,我有一个表,它遍历数据库中保存的所有项

在“操作”列下有一个按钮,可以使用
ng click=“go('events/show')”

在my routes.js中,我有:

.whenAuthenticated('/events/show', {
        templateUrl: 'views/eventShow.html',
        controller: 'eventShowCtrl'
      })
到目前为止一切正常

但是,我不清楚的是,如何将事件id传递到eventShow.html页面,以便知道从索引列表中单击了哪个项目,以便显示详细信息

我的firebase数据库如下所示:


查看ui路由器,它使动态路由更容易

但是如果你想保留你所拥有的,你应该像这样把事件id传递到你的路径中

$scope.go = function ( path, event ) {
  $location.path( path + "/" + event.id );
};

.whenAuthenticated('/events/show/:eventId', {
    templateUrl: 'views/eventShow.html',
    controller: 'eventShowCtrl'
 })

在您的控制器中,访问$stateParams.eventId以加载该事件。

查看ui路由器,它使动态路由变得更加容易

但是如果你想保留你所拥有的,你应该像这样把事件id传递到你的路径中

$scope.go = function ( path, event ) {
  $location.path( path + "/" + event.id );
};

.whenAuthenticated('/events/show/:eventId', {
    templateUrl: 'views/eventShow.html',
    controller: 'eventShowCtrl'
 })

在控制器中,访问$stateParams.eventId以加载该事件。

您应该在路由器中使用一个变量:

.whenAuthenticated('/events/:id', {
    templateUrl: 'views/eventShow.html',
    controller: 'eventShowCtrl'
 })
然后,您只需在函数调用中使用ID即可:

go('events/:id')
(我强烈建议观看这两个部分)


你会有更好的网址,可以书签

您应该在路由器中使用一个变量:

.whenAuthenticated('/events/:id', {
    templateUrl: 'views/eventShow.html',
    controller: 'eventShowCtrl'
 })
然后,您只需在函数调用中使用ID即可:

go('events/:id')
(我强烈建议观看这两个部分)

你会有更好的网址,可以书签

单击一次就可以传递UID(UID只是用户id的一个示例)

然后要查询firebase,假设您的对象中有一个名为
uid
的字段,您可以使用
startAT
endAT
方法

在这里,您可以单击一次传递UID(UID只是用户id的一个示例)

然后要查询firebase,假设您的对象中有一个名为
uid
的字段,您可以使用
startAT
endAT
方法


在这里我尝试了这个,但是,当我
console.log($location.path(path+“/”+uid))时,uid出现了未定义的情况控制台读取:
LocationHashbangUrl{$$protocol:“http”、$$host:“localhost”、$$port:9000、$$path:“/events/show/undefined”、$$search:Object…}
地址栏中的url是:
http://localhost:9000/#/events/show/undefined
@livi1717它是未定义的,因为uid不存在,它只是一个示例。uid或id是一个标识符,例如,在您的数据库中,您有一个动态键,如-KNXXXXXXXXX,然后您可以将其传递到url,如
http://localhost:9000/#/events/show/-KNXXXXXXXXX
,使用该id,您将能够查询您的数据库,以在firebase动态键下获得结果,当I
console.log($location.path(path+“/”+uid))时,uid是未定义的控制台读取:
LocationHashbangUrl{$$protocol:“http”、$$host:“localhost”、$$port:9000、$$path:“/events/show/undefined”、$$search:Object…}
地址栏中的url是:
http://localhost:9000/#/events/show/undefined
@livi1717它是未定义的,因为uid不存在,它只是一个示例。uid或id是一个标识符,例如,在您的数据库中,您有一个动态键,如-KNXXXXXXXXX,然后您可以将其传递到url,如
http://localhost:9000/#/events/show/-KNXXXXXXXXX
,使用该id,您将能够查询您的数据库,获取firebase动态键下的结果。Angular/firebase中的Master detail示例:Angular/firebase中的Master detail示例:我尝试了这个,但它只是将我发送到
。否则({redirectTo:'/')我的go()函数应该包含什么?我尝试了这个,但它只是将我发送到
。否则({redirectTo:'/')我的go()函数应该包含什么?
$scope.go = function ( path, uid ) {
  $location.path( path + "/" + uid );
};

.whenAuthenticated('/events/show/:eventId', {
    templateUrl: 'views/eventShow.html',
    controller: 'eventShowCtrl'
 })