我有一个 JSON 对象数组从我的 Node 路由传递到其各自的 View 中。例如:
res.render("path/to/view", { data: result, data2: result2 })
其中 result 和 result2 都是 JSON 对象的数组。在我看来,我在 ng-init 函数中使用它们,如下所示:( {{}} 指定 swig,我已将 [[]] 更改为指定 Angular,因此在下面的示例中,我们在使用我定义的 Angular init 函数之前使用 swig)
<div ng-init="init( {{ data|json }} )"> </div>
我应该说上面的例子工作得很好,但是当“数据”变成一个非常大的数据集时,很多时间都花在了 swig 部分 - 即将它转换为 JSON(再次..?)。就像我说的,“数据”已经是 JSON 的形式,但是当我从上面的 swig 部分删除 |json 时,我得到一个 [$parse:syntax]
错误,它给了我上面的行但评估:
<div ng-init="init( [object Object],[object Object] )"> </div>
我尝试过使用 ng-init="init( [[ JSON.parse( {{ data }} ) ]] )"
的变体这样我就可以将输出评估为 JSON(即使输出已经是..?),但无法让任何东西发挥作用。
有什么想法吗?也许我的语法错误?我不明白,因为当我将“数据”传递给 View 时,它是 JSON,但我无法将它直接传递到我的 init 函数中而不出现语法错误。
最佳答案
将您使用 ng-init
调用的任何内容从您的 View 中取出,并将其放入 Controller 或服务中。
不使用 ng-init 的原因有很多,以至于 Angular 团队基本上建议你不要使用它:https://docs.angularjs.org/api/ng/directive/ngInit
更新
我终于明白了你想要做什么,这就是所谓的引导。您可以将数据嵌入到 View 服务器端,如下所示:
<script>
angular.module("app").constant("myBootstrap", {{ data.stringified }});
</script>
其中 data.stringified
是您的字符串化数据。然后在 Angular 中,您可以使用 myBootstrap
作为常量注入(inject)任何您想要的 Controller ,与 $rootScope
等相同,并且数据将可用。
关于javascript - 使用 Angular 比 Swig 更有效地解释来自路线的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31527037/