JSON.parse won't在Angular中将JSON字符串转换为对象
JSON.parse won't convert JSON string into object in Angular
我正在为一个angular应用程序构建一个基于角色的登录,当你第一次输入你的凭据时,会话对象会被发送回来一堆属性,包括用户可以选择登录的角色数组。当用户选择他们想要登录的相应角色的单选按钮时,例如:"管理员",我使用ng-model' to update
$scope.model。
然而,在某些时候在UI $scope.model
被解析成一个字符串时,我需要它是一个javascript对象。简而言之,我试图将我的模型转换回对象,我无法让JSON.parse($scope.model)
工作。
这是我的控制器:
$scope.submit = function() {
$http
.post(app.api.root + 'session-tokens', $scope.user)
.then(
// SUCCESS
function (response) {
$scope.model = { selected: response.data.results.roles[0] };
$scope.results = response.data.results;
$scope.isCorrect = true;
$scope.welcome = 'Welcome, ' + $scope.user.username + '!';
// redirect after login -- need to change this to a profile page
// $location.path('/patients/22');
$scope.login = function() {
$scope.model = JSON.parse($scope.model);
authSvc.user({
id: response.data.results.userId,
token: $scope.model.selected.token,
role: $scope.model.selected.roleName,
providerName: $scope.model.selected.providerName,
username: $scope.user.username,
isAuthenticated: true
});
$scope.user = authSvc.user();
console.log(typeof $scope.model.selected);
};
}
};
我想进行转换的函数是$scope.login()
,它在用户选择角色并单击login后触发。
你知道我怎么才能让它工作吗?我不认为我在一个新的版本的angular使用angular.fromJson
。
谢谢。
编辑
这是我在控制台得到的错误:
SyntaxError: Unexpected token o
at Object.parse (native)
at Scope.$scope.login (eval at <anonymous> (http://localhost:4000/$js/jquery.js:336:5), <anonymous>:32:39)
at http://localhost:4000/$js/angular.js:10288:21
at http://localhost:4000/$js/angular.js:18086:17
at Scope.$eval (http://localhost:4000/$js/angular.js:12045:28)
at Scope.$apply (http://localhost:4000/$js/angular.js:12145:23)
at Scope.$delegate.__proto__.$apply (<anonymous>:855:30)
at HTMLFormElement.<anonymous> (http://localhost:4000/$js/angular.js:18085:21)
at HTMLFormElement.jQuery.event.dispatch (http://localhost:4000/$js/jquery.js:4371:9)
at HTMLFormElement.elemData.handle (http://localhost:4000/$js/jquery.js:4057:28)
编辑
所以$scope.model
实际上返回一个对象,但$scope.model.selected
返回一个json字符串,我需要它是一个对象。
返回字符串:
{"roleName":"Group Provider","providerId":100,"providerName":"TestProvider","token":"XXX"}
控制台。日志
console.log(response.data.results):
Object {userId: 3, roles: Array[2]}
console.log(response.data.results.roles[0]):
Object {roleName: "Administrator", providerId: 2, providerName: "TestLastNAme, Test", token: "xxx", $$hashKey: "0fL"}
console.log($scope.model):
Object {selected: "{"roleName":"Group Provider","providerId…Nn0.lwB6AggcMkvH_LcQzpUdLlbk3XBHTGBqCd8K07HBIfo"}"}
console.log($scope.model.selected):
{"roleName":"Group Provider","providerId":237,"providerName":"TestProvider","token":"xxx"}
console.dir($scope.model):
Object
selected: "{"roleName":"Insurance Group Provider","providerId":237,"providerName":"TestProvider","token":"xxx"}"
__proto__: Object
当您尝试在对象上使用JSON.parse()时,会发生该错误。
所有这些,事实证明问题是我在单选按钮上使用value="{{model}}"
而不是角的ng-value="model"
。value=
将对象解析为字符串,而ng-value
将其保留为对象。
相关文章:
- 如何在Javascript中将JSon对象转换为数组
- 如何在AngularJS-ng重复循环中将长JSON路径缩短为变量
- 我需要在jquery中将数组值转换为json
- 在Javascript中,如何在JSON对象中将1.00表示为数字
- 如何在Thymelaf中将JSON值从控制器传递到HTML
- 无法在Angular.js中将JSON转换为数组
- 如何在循环中将 json 数据显示为 HTML
- 如何在 JSF 中将 JS 函数作为 JSON 属性传递给前端
- 我需要帮助在 javascript 中将 JSON 数据转换为 3 级多维数组
- 在 Javascript 中将逗号分隔值转换为 JSON 对象
- 如何在AngularJs中将json数组转换为js数组
- 使用Javascript在Html中将Xml数据或Json对象预览为Xml树
- 在javascript错误中将json列表传递给数组
- 在JavaScript节点环境中将Gzip内容编码响应转换为JSON数据
- 如何在 JavaScript 中将文本文件转换为 JSON
- 在nodejs中将excel文件转换为json
- 在 Javascript 中将 JSONArray 转换为 JSON 对象
- 在 node.js 中将 2 个 json 对象合并为一个
- JQuery TypeError:在MVC中将循环结构转换为JSON
- 在 JSON 中将一个值分配给多个名称