从ui-router状态获取参数

时间:2017-04-20 15:21:15

标签: angularjs angular-ui-router

我有一个Angular View,他有添加和编辑动作,如:

<div class="col-md-12">
  <div class="col-md-2">
    <button id="agregar" type="submit" class="btn blue btn-lg" ng-click="nuevo();">Add</button>
  </div>
  <div class="col-md-2">
    <button id="editar" type="submit" class="btn blue btn-lg" ng-click="editar();">Edit</button>
  </div>
  <div class="col-md-2">
    <button id="eliminar" type="submit" class="btn blue btn-lg" ng-click="eliminar();">Delete</button>
  </div>
</div>

行动控制者是:

function nuevo() {
     $state.go("root.detalleregistros", { tipo: "nuevo" });
}

function editar() {
     $state.go("root.detalleregistros", { tipo: "edicion"}); 
}

如您所见,我重定向到同一视图root.detallregistros并需要获取'tipo'值。所以我可以执行相应的功能。

function insertar() {           
    apiService.post("../../api/Catalogo/AddCatalogoRegistro/" + selected.ID, 
      function(res) {
            // my code
         });
}

如果它带有tipo:edicion执行其他操作

2 个答案:

答案 0 :(得分:0)

您可以在服务中使用这样的关联数组:

var apiUrlMap = {
  new: "newApiPath",
  edit: "editApiPath",
  delete: "deleteApiPath",
};

然后在服务调用之前,您可以根据view参数提取正确的api url路径,即var apiUrl = apiUrlMap[tipo];,然后构建完整的api url。

希望这可以帮到你

答案 1 :(得分:0)

您可以使用$ stateParams.tipo公开其值,并且不要忘记在控制器中注入$ stateParams服务。祝你好运

app.controller('Ctrl', function($scope, $stateParams) {
    if($stateParams.tipo === 'nuevo') {
        // your corresponding code 
    }
    else if($stateParams.tipo === 'edicion') {
        // your corresponding code
    }
    else if($stateParams.tipo === 'eliminar') {
        // your corresponding code
    }
    else {
        console.log("unexpected tipo value");
    }
})