javascript - 使用 Angular 比 Swig 更有效地解释来自路线的数据?

标签 javascript json angularjs node.js swig-template

我有一个 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/

相关文章:

android - 字符串图像base64避免JSON对象中包含其他数据(android java)

javascript - 使用 jquery 检索属性值

javascript - 从下拉列表中选择数据时从 MYSQL 数据库设置输入字段值属性

javascript - JS如何根据输入的字符捕获字段验证逻辑然后删除

javascript - 在对象上使用 Object.values() 后,数组元素的顺序可以更改吗?

javascript - 事件委托(delegate)不工作jquery

javascript - 如何从字符串创建 JS 对象

angularjs - 配置字段中的颜色和 logColors 有什么区别

angularjs - 如何在 ng-repeat 中显示元素一次

javascript - 无法对 Gatsby 站点中 Ant Design Table 中的列进行排序