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

时间:2016-07-12 10:10:17

标签: 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);
       .....}

1 个答案:

答案 0 :(得分:1)

据我了解您的问题,您可以使用$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,其中键是param名称,值是url中的param值。有关详细信息,请参阅官方docs

希望这可以解决问题。