好吧,我有这个plunkr试图模拟我的情况:
我有3 个选项卡,想法是用户在文本框中键入一个单词,当单击按钮时,角度服务会根据在文本框中键入的内容从数据库返回答案(结果)(我已经模拟了这个过程)请求数据到 json 文件,所以无论你输入什么都不重要,总是会返回整个数据)并在另一个视图中填充一个表。
我的目标是什么?好吧,我需要保留每个标签完整的每个视图。换句话说,当用户单击一个选项卡(更改状态)并返回到另一个选项卡时,所请求的数据可能在那里(以及在搜索框中键入的内容)。
编辑:
我有一个包含我的定义的数组:
var parentStates = [
{state : 'tab1', url: '/tab1/', template: 'tab1.html', s: false, d: true},
{state : 'tab2', url: '/tab2/', template: 'tab2.html', s: false, d: true},
{state : 'tab3', url: '/tab3/', template: 'tab3.html', s: false, d: true},
{state : 'tab1.table', url: '', template: 'table.html', s: true, d: false},
{state : 'tab2.table', url: '', template: 'table.html', s: true, d: false},
{state : 'tab3.table', url: '', template: 'table.html', s: true, d: false}
];
我以这种方式动态地定义我的状态:
parentStates.forEach(function(childName){
$stateProvider
.state("home." + childName.state, {
controller: "itemController", resolve: { $title: function() { return childName.state; } },
url: childName.url,
templateUrl: childName.template,
sticky: childName.s,
deepStateRedirect: childName.d
})
});
仅适用于粘性状态home.tab*.table
。这有效,但不像预期的那样。例如,我在搜索框中输入的内容,当我更改选项卡时会消失。我需要每个选项卡都可以保留 3 个数组(如下所述)的内容。那是我的问题。
我有 3 个数组:
$scope.Model.items;
$scope.Model.filteredlist;
$scope.Model.expenses;
我使用一个调用函数$scope.clear_arrays
来清除数组上的数据(甚至是$stateChangeSuccess
)。我不知道这是否可以得到我想要的。
我知道我必须使用很棒的angular-ui-router-extras(sticky states)
库,但我不知道如何在我的情况下应用它。我尝试过:
sticky: true,
deepStateRedirect: true,
但不起作用。一些想法,一些帮助?
编辑:
正如文档所说,我需要这部分:
...切换到其他选项卡之一时,应用程序中选项卡的状态不会退出。用户应该能够在选项卡之间来回切换,而不会中断他们的工作流程。