Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 从表行到项目的角度布线_Angularjs_Routing - Fatal编程技术网

Angularjs 从表行到项目的角度布线

Angularjs 从表行到项目的角度布线,angularjs,routing,Angularjs,Routing,我有一个包含列表(又名产品)的页面。我需要在每行添加一个编辑列表按钮,该按钮将转到一个新页面,在那里我可以编辑单个列表(产品) 所以:列表>编辑列表 HTML只是我SPA内容区域中的模板-HTML片段。(我之所以提到这一点,是因为我必须确保我的页面链接到它们正确的控制器——我的代码段/模板上没有ng controller=——这是页面的较高位置。) 无论如何,这就是我试图将列表路由到编辑列表的方法: listings.html: <table class="table table-

我有一个包含列表(又名产品)的页面。我需要在每行添加一个编辑列表按钮,该按钮将转到一个新页面,在那里我可以编辑单个列表(产品)

所以:列表>编辑列表

HTML只是我SPA内容区域中的模板-HTML片段。(我之所以提到这一点,是因为我必须确保我的页面链接到它们正确的控制器——我的代码段/模板上没有ng controller=——这是页面的较高位置。)

无论如何,这就是我试图将列表路由到编辑列表的方法:

listings.html:

    <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就是答案。我在仔细研究这条路线。