首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将JSON对象传递给ng-init

将JSON对象传递给ng-init
EN

Stack Overflow用户
提问于 2015-05-30 01:55:37
回答 3查看 6.2K关注 0票数 1

我试图使用ng init+ stringify将一个JSON对象传递给我的应用程序,但是它不起作用,我得到了一个Lexer错误。

Lexer Error: Unexpected nextharacter at columns 8-8 [#] in expression [friends=#{JSON.stringify(friends)}].

Javascript

代码语言:javascript
运行
复制
var friends = [
{name:'John', phone:'555-1276'},
{name:'Mary', phone:'800-BIG-MARY'},
{name:'Mike', phone:'555-4321'},
{name:'Adam', phone:'555-5678'},
{name:'Julie', phone:'555-8765'},
{name:'Juliette', phone:'555-5678'}
];

</script>

代码语言:javascript
运行
复制
<div ng-init="friends=#{JSON.stringify(friends)}"></div>
EN

回答 3

Stack Overflow用户

发布于 2015-10-27 08:23:08

你应该试试这些引语:

代码语言:javascript
运行
复制
<div ng-init="friends='#{JSON.stringify(friends)}'"></div>

我不知道您的模板引擎是什么,但是如果使用ejs,它将是:

代码语言:javascript
运行
复制
<div ng-init="friends='<%= JSON.stringify(friends) %>'"></div>

另外,如果您对一些简单的或/和双倍的引号有问题,您可以这样用regexp替换它们:

代码语言:javascript
运行
复制
<div ng-init="friends='<%= JSON.stringify(friends).replace(/"/g, "\\\"").replace(/'/g, "\\'") %>'">

--我不知道这是一个最好的实践,还是不知道是在中,但是由于这一点,我可以共享以前从服务器到best检索到的一些数据。通过这种方式,我阻止了Angulars控制器对请求后端的公共API的许多请求。

在角度方面,您可以这样做:$scope.friends = JSON.parse(friends)“公开”您的json。

票数 4
EN

Stack Overflow用户

发布于 2015-05-30 03:12:43

您必须以角度的方式进行操作,您可以使用angularjs的$window访问javascript变量,并将其转换为控制器中的$scope变量,并可以在html中访问它。

看看你的代码,我只是稍微修改了一下,

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html ng-app="myApp">

<head>
<script data-require="angular.js@1.3.15" data-semver="1.3.15" src="https://code.angularjs.org/1.3.15/angular.js"></script>
<link rel="stylesheet" href="style.css" />
</head>

<body ng-controller="myController">
<h1>Hello Plunker!</h1>
<script>
  var friends = [
    {name:'John', phone:'555-1276'},
    {name:'Mary', phone:'800-BIG-MARY'},
    {name:'Mike', phone:'555-4321'},
    {name:'Adam', phone:'555-5678'},
    {name:'Julie', phone:'555-8765'},
    {name:'Juliette', phone:'555-5678'}
  ];

var app = angular.module('myApp', []);

app.controller('myController', ['$scope', '$window', function($scope, $window) {
  $scope.friendsInscope = $window.friends;
}]);

</script>
<!--<div ng-init="friends=#{JSON.stringify(friends)}">{{friends}}</div>-->
<div ng-init="friends=friendsInscope">{{friends|| json}}</div>
</body>

</html>

工作柱塞

希望这能有所帮助!

票数 2
EN

Stack Overflow用户

发布于 2015-05-30 02:15:42

角是与范围一起工作的,它不能访问全局变量/函数。因此,它永远不会使用friends变量,也不可能从表达式访问JSON.stringify。在角度上也没有#{}算子,它在错误描述中告诉了你。

我建议你读:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30541423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档