我正在fgl.res
中存储对象列表。然后在我的一个控制器中,我获得该列表的值并将其显示在页面上,用户可以删除其项目。
问题是,当用户从视图模型中删除该列表中的一个项目时,它也会从我不想要的$sessionStorage
中删除。
这是我的控制器代码
$sessionStorage
答案 0 :(得分:1)
制作web_urls的副本以断开绑定(如果有的话)
// Delete a URL from the vm
vm.deleteUrl = function(index) {
vm.web_urls = angular.copy(vm.web_urls).splice(index, 1);
}
您也可以复制newVal以便断开绑定
vm.web_urls = angular.copy(newVal.web_information.web_urls);
答案 1 :(得分:1)
vm.web_urls = newVal.web_information.web_urls;
此行直接引用具有相同内存位置的sessionStorage变量的对象。
因此,即使你从vm.web_urls
中删除对象,sessionStorage中的数据也会被删除。
而是使用
复制对象而不是引用vm.web_urls = angular.copy(newVal.web_information.web_urls);
vm.filters = angular.copy(newVal.web_information.stop_list);
因此,请将watch
功能更改为
$scope.$watch(function () {
return $sessionStorage.currentCommuneData;
}, function (newVal, oldVal) {
if (newVal) {
vm.web_urls = angular.copy(newVal.web_information.web_urls);
vm.filters = angular.copy(newVal.web_information.stop_list);
}
else {
window.location.replace("test.html");
}
}, true);