$state.go 中的条件路由和调用编辑方法 angularjs



当用户单击电子邮件中的链接时,我们具有使预订可编辑的功能。

目前用户可以浏览网站并根据电子邮件地址查找,然后单击编辑以更改预订,因此编辑功能就像只有孩子操作一样。

<button ng-if="!reservation.editing" test-id="reservations-reservation-edit-button" ng-click="edit(reservation)" class="btn btn-link change-link details-edit-reservation-link">Edit</button>

电子邮件链接将具有"RId","UserId"等参数...

问题是我们如何根据传递的参数直接调用编辑操作。以下是当前 $state.go 的片段

 sp.state('reservations', {
    url: '/reservations?e&getDetail&edit',
    templateUrl: 'src/reservations/template.html',
    data: {
      backState: "back",
      shortTitle: "Reservations"
    }

我们是否可以在$state中进行任何更改,以便我们可以进行条件路由,然后调用编辑编辑功能功能片段如下所示

 $scope.edit = function(reservation){
      scrollToTop(true);
       .....}

据我了解您的问题,您可以使用$stateParams来解决它

您的控制器:

yourApp.controller("YourCtrl"), function($scope, $stateParams) {
    var edit = $stateParams.edit;
    var getDetail = $stateParams.getDetail;
    var e = $stateParams.e;
    $scope.edit = function (params) {
        ...
    };
    if(edit && e) { // have whatever condition you want for enabling editing
        // run the function and pass the stateParams to the function
        $scope.edit($stateParams);
    }
});

请注意,$stateParams将是一个json,键是参数名称,值是 url 中的参数值。有关详细信息,请参阅官方文档。

希望这能解决问题。

最新更新