我有一个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执行其他操作
答案 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");
}
})