AngularJS |在更新现有项后重定向到newItem

时间:2019-01-31 22:36:48

标签: javascript angularjs api redux url-redirection

我有一个AngularJS应用程序,该应用程序在一页中具有更新功能。每次更新时,都会创建一个项目名称,并使用新名称创建一个新项目。当前,我们更新并重定向到上一个项目。我想重定向到新的。

这是我到目前为止的代码。部分工作。在我的控制器中:

  $scope.updateItemConfig = function(configs) {
    configs = _.isString(configs) ? JSON.parse(configs) : configs;
    $scope.editorConfigs.readOnly = false;
    $scope.newItemName = "";

    if (!$scope.item.itemInfo.name) {
      $scope.newItemName = $scope.item.itemInfo.name;
      ItemAPI.updateItem(newItemName, configs).then(function(res) {
        $scope.item= {};
        getItem(newItemName);
        $location.path(
          `item/${$scope.itemParentComponent}/${$scope.newItemName}`
        );
      });
    } else {
      ItemAPI.updateItem(configs["name"], configs).then(function(res) {
        $scope.item= {};
        getItem(configs["name"]);    $location.path(`item/${$scope.itemParentComponent}/${$scope.itemName}`);
      });
    }
  };

在我的HTML中:

    <button
      ng-show="!editorConfigs.readOnly"
      permission="[roles.write]"
      ng-disabled="errors.length > 0"
      ng-click="updateItemConfig(item.userConfigs);"
      class="btn btn-sm btn-default float-right mt15"
    >
      <i class="fa fa-floppy-o" aria-hidden="true"></i> Update Config
    </button>

我有一些处理状态的方法。我唯一要做的就是加载状态数据。基本上,我想使用这样的URL重定向到newItem:itemParentComponent/newItemName而不是itemParentComponent/itemName,这就是现在发生的情况。谁能帮忙?

更新 这是控制器将状态映射到控制器的一部分:

  function mapStateToController(state) {
    return {
      user: state.auth.user,
      config: state.session.config,
      supportedItems: state.items.supportedItems,
      selectedItemParentComponent: state.connectors.selectedItemParentComponent,
      selectedItem: state.items.selectedItem,
      selectedItemMetrics: state.items.selectedItemMetrics,
      selectedItemMetricsGrouped: _.groupBy(
        state.item.selectedItemMetrics,
        "itemTask"
      ),
      selectedItemInfo: state.items.selectedItemInfo,
      ConfigInfo: state.config.configInfo
    };
  }
  /**
   * Redux Action mapping
   */
  const MappedActions = {
    ...ItemActions,
    ...ConfigActions
  };

如果您愿意,我可以向您显示更多。但基本上,我们有selectedItemInfo返回了以下模式:

name: '',
description: '',
count: number
...rest

因此,我想这样做,以便在名称更改的情况下,获取newName值,并使if-else语句起作用。如果名称未更改,请保留当前名称;如果名称属性已更改,请使用新名称。

0 个答案:

没有答案