【问题标题】:Give URL with ID in Angular UI Router在 Angular UI 路由器中提供带有 ID 的 URL
【发布时间】:2017-02-27 09:21:24
【问题描述】:

我有一个问题,当我编辑数据时,我的 url 没有显示 id 示例:/answer/1 or /answer/2 or /answer/3 等。我很困惑,因为我使用的是 UI ROUTER 我是使用 UI ROUTER angularjs 的初学者。你能帮助我吗 ?我该怎么办 ?谢谢

我的路由代码:

.state({
    name: 'answer',
    url : '/answer/',
    params : {
                obj : null  
    },
    controller: 'answer-controller',
    templateUrl: 'templates/table-answer.html'
})

ng-click go to table-answer:

<button type="button" class="btn btn-default" ng-click="ListAnswer(data.item)"><i class="fa fa-eye"></i> View Answer</button>

将参数 $scope.ListAnswer 传递给 answer-controller.js

$scope.ListAnswer = function(data) {

    $state.go('answer', {obj : data});

};

【问题讨论】:

    标签: angularjs angularjs-scope angular-ui-router angularjs-routing


    【解决方案1】:

    这很简单。只有一件事你错过了,否则你的代码是正确的。

    .state({
      name: 'answer',
      url : '/answer/{answerId}',
      params : {
        obj : null  
      },
      controller: 'answer-controller',
      templateUrl: 'templates/table-answer.html'
    })
    

    现在有两种方法可以超越该状态。

    //HTML

    <button type="button" class="btn btn-default" ng-click="ListAnswer(data.answerId)"><i class="fa fa-eye"></i> View Answer</button>
    

    //控制器

    $scope.ListAnswer = function(answerId) {
        $state.go('answer', {answerId: answerId});
    };
    

    <button type="button" class="btn btn-default" ui-sref="answer({answerId: data.answerId})"><i class="fa fa-eye"></i> View Answer</button>
    

    【讨论】:

    • {obj : data} --> 向 answer.controller.js 发送响应并使用它们。如果我使用 {obj : answerID} ,我的响应数据如何使用或者我应该使用数据和 answerID ?
    • 因为 {obj : data} 很重要
    • 我可以使用两个参数吗?像 {obj : data} 和 {obj : data.answerId}
    • 因为 {obj : data} 显示表格,我应该使用该响应
    • 为什么要在参数中发送整个数据,因为您可以使用传递的参数获取数据。所以只需传递唯一的 id 并使用它们在控制器中获取数据。
    【解决方案2】:

    你的状态需要稍微改变一下:

    .state({
      name: 'answer',
      url : '/answer/{itemId}',
      params : {
        obj : null  
      },
      controller: 'answer-controller',
      templateUrl: 'templates/table-answer.html'
    })
    

    稍微更改您的代码以传递链接 url 中的 id:

    <button type="button" class="btn btn-default" 
      ui-sref="answer({itemId: id})">
    

    但是,如果您想从控制器访问参数,则必须使用 $stateParams,因此在本例中为 $stateParams.itemId

    【讨论】:

    • 感谢您的回答,但是 ui-sref 可以提供多个参数吗?
    • 是的,你可以在 ui-sref 中传递多个参数。这是一个示例:ui-sref="answer({itemId: id, itemName: name})
    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 2021-06-02
    • 2016-12-22
    • 1970-01-01
    • 2016-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多