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动态键下获得结果,当Iconsole.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'
})