Javascript 获取对象id并插入会话存储
我有一个控制器,它根据第一个下拉框的选择填充第二个下拉框,虽然WebStorm将其视为语法错误,但效果良好。 我知道我想将格式fname的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'
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);
}