【问题标题】:Error: [$parse:lexerr] http://errors.angularjs.org/1.2.21/$parse/lexerr?p0=Unterminated错误:[$parse:lexerr] http://errors.angularjs.org/1.2.21/$parse/lexerr?p0=Unterminated
【发布时间】:2015-01-18 03:51:02
【问题描述】:

我试图从我的数据库中提取数据以显示到一个表单中,但我不断收到此错误 错误:[$parse:lexerr] http://errors.angularjs.org/1.2.21/$parse/lexerr?p0=Unterminated%20quote&p1=s %2055-56%20%5B'%5D&p2=report.incidentTime%20%3D'Couple'sNaNispute%20at%20Robinson%20Hall'。我在这个网络应用程序中使用 laravel 和 angularjs(混合方法)。


HTML

<div class="col-xs-4 col-sm-4 col-md-4">
    <div class="form-group" data-ng-class="{'has-error': documentIncident.reportTitle.$invalid && documentIncident.reportTitle.$dirty}">
        <label for="incidentTime">Report Title</label>
        <input type="text" name="reportTitle" ng-model="report.reportTitle" ng-init=" report.incidentTime ='{{$reports[0]->reportTitle}}'" autocomplete="off" ng-minlength="6" class="form-control input-sm" required>
     </div>
</div>

数据库数据

我遇到的问题是撇号阻止了数据的显示。有没有办法解决这个问题,无论是通过过滤、转义还是任何其他方法?

【问题讨论】:

  • 不要从 view::make() 传递 $reports。创建服务并通过 Angular 服务将 $reports 提取为 json,然后像这样使用:reports[0].reportTitle

标签: angularjs laravel


【解决方案1】:

问题是,在 laravel 完成渲染到您的模板后,它看起来像这样:

ng-init="report.incidentTime ='Couple's dispute at Robinson Hall'"

由于 Couple's 中不匹配的 ' 而导致异常。你需要做的是

  1. 通过 API 加载数据,而不是将其直接呈现到 HTML 中(强烈推荐)
  2. 在 laravel 中使用字符串转义函数来确保渲染的字符串在 ' 之前有一个 \ 例如these question answers

【讨论】:

  • {{}}s 用于 Laravel 的 Blade 模板引擎 (laravel.com/docs/4.2/templates#blade-templating)。这就是为什么-&gt; 也在里面的原因。我不认为 OP 意识到这种方法有缺陷,因为 {{}} 永远不会通过服务器端。
  • 谢谢,这很奇怪。更新了我的答案
  • 加一个方法!在我看来,将 UI 与数据分离绝对是可行的方法。有一种方法可以在刀片中使用不同的开始和结束标签——即:Blade::setContentTags
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多