Javascript 获取对象id并插入会话存储

Javascript 获取对象id并插入会话存储,javascript,angularjs,session-cookies,Javascript,Angularjs,Session Cookies,我有一个控制器,它根据第一个下拉框的选择填充第二个下拉框,虽然WebStorm将其视为语法错误,但效果良好。 我知道我想将格式fname的ID发布到我的会话存储中,以便在其他地方使用,但是我尝试了下面的代码,我认为值为 [对象] 如果我使用 sessionStorage.setItem('format', $scope.formats); 及 未定义 如果我使用 sessionStorage.setItem('format', $scope.formats); setItem'format'

我有一个控制器,它根据第一个下拉框的选择填充第二个下拉框,虽然WebStorm将其视为语法错误,但效果良好。 我知道我想将格式fname的ID发布到我的会话存储中,以便在其他地方使用,但是我尝试了下面的代码,我认为值为

[对象]

如果我使用

sessionStorage.setItem('format', $scope.formats);

未定义

如果我使用

sessionStorage.setItem('format', $scope.formats);
setItem'format',$scope.formats.id

我也试过了

sessionStorage.setItem('format', $scope.formats.formatType.id);
我什么也得不到,甚至连一个空值都没有

如何将ID正确添加到会话存储中的格式值

完整代码

})

为了进一步解释如何获取ID,下面的代码使用户可以从名称类型中选择一个fname,例如,如果选择员工,则您将获得bill、bob和tom,然后在选择一个后,将打印所选名称和fname,包括fname ID,fname ID是我需要发送到会话存储的

HTML

不能存储对象,只能存储字符串

要存储对象,需要将其字符串化

var jsonItem = JSON.stringify($scope.formats);
sessionStorage.setItem('format', jsonItem);
然后要检索它,您需要解析它

var item = sessionStorage.getItem('format');
item = JSON.parse(item)
来自MDN

storage.setItemkeyName,keyValue

keyName一个DOMString,其中包含要删除的密钥的名称 创建/更新

keyValue一个DOMString,包含您要输入的值 提供您正在创建/更新的密钥

关于查找ID

当你这样做的时候

$scope.formats = $scope.productsandformats.find(ps => ps.name == 
 $scope.formData.ProductType.name)
你得到一个具有这种结构的对象

{
    "name": "staff",
    "format": [
        {"Fname": "bill", "id": "1"},
        {"Fname": "bob", "id": "2"},
        {"Fname": "tom", "id": "3"}
    ]
},
因此,我猜id包含在item.format[0]中。第一个项目的id,后续项目的id也是如此


format是一个数组,因此如果您不首先选择要使用的数组元素,则无法直接访问id,例如format[0]。

因此我使用了上面的答案,但为了获得id,我必须使用此选项

 $scope.myFunc = function() {
        var jsonItem = JSON.parse($scope.formData.formatType.id);
        sessionStorage.setItem('format', jsonItem);
    }

@Bolza的答案很好,但我需要更多,所以继续挖掘和试验

好的,我得到的很好,而字符串atm不仅仅是ID,但当我解决这个问题时,我会接受,+1的信息,你的a星这是最好的答案,我只需要找到一种方法,让idI扩展答案来解决idI的问题刚刚看到,谢谢你,伙计。再过几个小时就到周末了。我一回答就接受。我将用html Aspectah更新我的问题。请阅读您关于无法访问数组中id的更新,好的,谢谢您的帮助。
 $scope.myFunc = function() {
        var jsonItem = JSON.parse($scope.formData.formatType.id);
        sessionStorage.setItem('format', jsonItem);
    }