Angularjs:相同的状态和url用于编辑和添加页面

时间:2018-11-26 12:42:52

标签: angularjs angularjs-routing angular-state-managmement

我想对编辑和添加页面使用相同的状态。 这是我的状态

 .state('editProduct', {
url: "/editProduct/:productId",
data: {title: "Edit product"},
templateUrl: 'views/package/editProduct.html',
controller: 'editProductCtrl',
controllerAs: 'editProduct'
});

现在在我的控制器中,我想检查何时获得stateParam“ packageId”我得到布尔变量isEditMode = true,否则我想将其设置为isEditMode = false。

现在,当我的editMode为true时,我将允许用户编辑具有预填充详细信息的产品。

当editMode为false时,我想显示一个空白产品表单,用户可以在其中创建新产品。

  

这种方法的原因:我想重新使用HTML页面进行编辑和添加产品

面临的问题: 我可以访问/ editProduct / 1,但无法访问/ editProduct,我被重定向到默认路由

2 个答案:

答案 0 :(得分:2)

您正在使用pathParam,它是必填的(“ /:productId”)。 如果希望它是可选的,则应使用queryParam:

url: "/editProduct?productId",

答案 1 :(得分:0)

您需要将参数设为可选,如果使用的是ui-router 1.x版,请尝试将其添加到状态定义中:

params: {
   productId: null
}