Angularjs 从表行到项目的角度布线
我有一个包含列表(又名产品)的页面。我需要在每行添加一个编辑列表按钮,该按钮将转到一个新页面,在那里我可以编辑单个列表(产品) 所以:列表>编辑列表 HTML只是我SPA内容区域中的模板-HTML片段。(我之所以提到这一点,是因为我必须确保我的页面链接到它们正确的控制器——我的代码段/模板上没有ng controller=——这是页面的较高位置。) 无论如何,这就是我试图将列表路由到编辑列表的方法: listings.html:Angularjs 从表行到项目的角度布线,angularjs,routing,Angularjs,Routing,我有一个包含列表(又名产品)的页面。我需要在每行添加一个编辑列表按钮,该按钮将转到一个新页面,在那里我可以编辑单个列表(产品) 所以:列表>编辑列表 HTML只是我SPA内容区域中的模板-HTML片段。(我之所以提到这一点,是因为我必须确保我的页面链接到它们正确的控制器——我的代码段/模板上没有ng controller=——这是页面的较高位置。) 无论如何,这就是我试图将列表路由到编辑列表的方法: listings.html: <table class="table table-
<table class="table table-striped table-bordered table-hover table-checkable order-column"
id="listings-table"
datatable="ng"
dt-options="listingVm.dtOptions"
dt-column-defs="listingVm.dtColumnDefs">
<tr ng-repeat="listing in listingVm.listings">
<td>{{ listing.Title }}</td>
<td>{{ listing.Description }}</td>
<!-- my addition: -->
<td><a ng-click="listingVm.editListing(listing.Id)"><i class="fa fa-edit"></i></a></td>
</tr>
</table>
router.js:
.state('layout.listing', {
url: '/listing',
templateUrl: '/Content/js/apps/store/views/listing.html',
controller: 'listingController',
controllerAs: 'listingVm',
data: { pageTitle: 'Listings' }
})
// I added this:
.state('layout.editlisting', {
url: '/editlisting/:id',
templateUrl: '/Content/js/apps/store/views/edit_listing.html',
controller: 'editListingController',
controllerAs: 'listingVm',
data: { pageTitle: 'Edit Listing' }
})
我呃。。。我卡住了。我真的不知道该怎么做
它所做的是立即重定向到我的默认仪表板页面:/#/dashboard,如果它找不到该名称的页面,我希望它这样做。(没有错误,只是重新路由到默认值)
看起来我可能在使用两种不同的路由方式
如果我的路由器中有状态,我可以这样做:
<a ui-sref="layout.editlisting">
让我们用一个干净的答案而不是评论
$location.path
将发送不带参数的URL
$location.url('/editlisting/' + listingId);
应按预期工作
要在接收控制器内检索参数,首先必须注入$stateParams,其中包含来自请求的命名参数:
.controller('YourCtrl', ['$stateParams', function($stateParams) {
this.listingId = $stateParams.listingId;
}
让我们用一个干净的答案而不是评论
$location.path
将发送不带参数的URL
$location.url('/editlisting/' + listingId);
应按预期工作
要在接收控制器内检索参数,首先必须注入$stateParams,其中包含来自请求的命名参数:
.controller('YourCtrl', ['$stateParams', function($stateParams) {
this.listingId = $stateParams.listingId;
}
请尝试$location.url('/editlisting/'+listingId);谢谢。看来我的问题不在于路由器,而在于路径。另一个简单的问题是:如何检索我在editListing页面上的listingId?我是否从URL查询字符串中提取它?请尝试$location.URL('/editlisting/'+listingId);谢谢。看来我的问题不在于路由器,而在于路径。另一个简单的问题是:如何检索我在editListing页面上的listingId?我是从URL查询字符串中提取的吗?谢谢$stateParams就是答案。我在仔细研究这条路线,谢谢$stateParams就是答案。我在仔细研究这条路线。