我有一个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语句起作用。如果名称未更改,请保留当前名称;如果名称属性已更改,请使用新名称。