【问题标题】:Assign jade variable to Angular将玉变量分配给 Angular
【发布时间】:2014-09-07 20:49:12
【问题描述】:

在我的应用程序中,我使用 NodeJS,后端使用 Express,前端使用 Angular。我也在使用 Jade 模板引擎。

jade 通过这段代码获得了一个名为“adv”的变量。

      res.render('page',{adv:result[0]})

在 controller.js 中(用于角度)

        $scope.content = [];

我想做类似的事情

        form(ng-init="content=#{adv}") 

            h5 {{"content" + content}}

即将该翡翠变量分配给范围。它不工作。我可以使用 http.get 并将内容直接获取到角度范围,但只是想知道是否可以这样做

谢谢

【问题讨论】:

  • 你为什么不说$scope.adv = result[0]
  • 您有任何错误吗?渲染出来的 HTML 是什么样子的?
  • @Mritunjay - 使用 res.render('page',{$scope.content:result[0]}) 给出“SyntaxError: Unexpected token 。”
  • @ivarni - 错误:[$parse:syntax] errors.angularjs.org/1.2.18/$parse/… 仅显示“内容”字符串
  • 该错误提示 form(ng-init="content=#{adv}")<form ng-init="content=[object]"> 结尾,所以看起来这里有两个问题。首先,jade 似乎将 result[0] 呈现为 JSON 对象而不是字符串(也许尝试将其字符串化?)其次,我很确定如果你想分配一个常量和 ng-init,你需要使用单引号不是变量。

标签: node.js angularjs express pug


【解决方案1】:

这行得通。

    - var str_adv = JSON.stringify(adv)

    form(ng-init="content = #{str_adv}") 

甚至(其中 getContent 是控制器中定义的一个函数)

    form(ng-init="getContent(#{str_adv})") 

这两个也解析字符串并将对象存储在“内容”中

但是直接使用

    form(ng-init="content = JSON.stringify(#{adv})")

给出同样的错误

似乎无法在 ng-init 中分配对象。

感谢@ivarni 提供有关 stringify 的提示

【讨论】:

  • 这对我不起作用 :( 我的代码是 ng-init="balance = #{balance}"。我做错了什么?
  • 你也可以这样使用它:form(ng-init="content = #{JSON.stringify(adv)}")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-19
  • 2015-08-24
  • 2016-09-07
  • 1970-01-01
  • 2014-05-11
  • 2010-11-17
  • 1970-01-01
相关资源
最近更新 更多