将对象ID传递给会话存储

时间:2017-07-25 12:18:32

标签: javascript angularjs parsing object local-storage

我有一个简单的功能,可以将选定的对象ID发布到会话存储,它可以很好地作为数字,但是当我将其更改为单词时,它不起作用,任何想法为什么以及如何解决它?

我认为它会很好,因为它们都是一个字符串,因为你可以看到我的函数在底部解析json,我不明白为什么它只适用于数字?

代码

$scope.productsandformats = [{
    "name": "name 1",
    "format": [{
        "Fname": "test (ROADSIDE TEMP)",
        "id": "Roadside"
    }, {
        "Fname": "test Sheet",
        "id": "2"
    }, {
        "Fname": "Wrap test (Digital)",
        "id": "3"
    }]
}, {
    "name": "name 2,
    "format": [{
        "Fname": "2 test",
        "id": "4"
    }, {
        "Fname": "test Live (Digital)",
        "id": "5"
    }]
};
$scope.productTypeChange = function() {
    $scope.formats = $scope.productsandformats.find(ps => ps.name === $scope.formData.ProductType.name)
        //NG-Change
    $scope.myFunc = function() {
        var jsonItem = JSON.parse($scope.formData.formatType.id);
        sessionStorage.setItem('format', jsonItem);
    }
}
});

我在检查员中收到错误

  

SyntaxError:位于0的JSON中的意外标记R.       在JSON.parse()

2 个答案:

答案 0 :(得分:0)

$scope

中尝试以下json
$scope.productsandformats =[{
    "name": "name 1",
    "format": [{
        "Fname": "test (ROADSIDE TEMP)",
        "id": "Roadside"
    }, {
        "Fname": "test Sheet",
        "id": "2"
    }, {
        "Fname": "Wrap test (Digital)",
        "id": "3"
    }]
}, {
    "name": "name 2",
    "format": [{
        "Fname": "2 test",
        "id": "4"
    }, {
        "Fname": "test Live (Digital)",
        "id": "5"
    }]
}]

答案 1 :(得分:0)

您正在解析的ID不是JSON,这就是您收到错误的原因。

事实上,整个范围对象只是一个JavaScript对象,而不是JSON(它是一种文本格式)。

你得到的ID是字符串“Roadside”,但是如果它是一个JSON字符串,它看起来像“{\”key \“:\”value \“}”。它缺少开括号的事实告诉解析器它是错的。