【问题标题】:Use of Undefined Constant - assumed id使用未定义常量 - 假定 id
【发布时间】:2014-05-24 16:11:24
【问题描述】:

我是 angularjs 的新手,在实现一个简单的清单时遇到了一些麻烦。

<html lang="en" ng-app>
<body>
<div ng-controller="IdController" class="id-contain">

<ul>
    <li ng-repeat="id in ids">{{ id.body }}</li>
</ul>

</div>
</body>
</html>

在我的main.js 我有

function IdController($scope) {
$scope.id = [
    { body: 'some' },
    { body: 'boiler' },
    { body: 'plate' }
];
}

但是,当我加载页面时,我收到了Use of undefined constant id - assumed 'id' 关于我可能出错的地方有什么想法吗?

编辑:我已将控制器中的名称从 $scope.id 调整为 $scope.ids 无济于事,当我将 {{}} 更改为 [[]] 时,它会加载 [[ id.body ]] 3 次,但不是价值。当我使用 {{}} 运行它时,它给了我同样的错误,并被解析为 &lt;?php echo id.body; ?&gt;

【问题讨论】:

  • 可能在php代码的某个地方?
  • 需要在你的 PHP 中找到一些 id 并将其替换为 $id :)

标签: javascript php angularjs laravel


【解决方案1】:

由于许多 JavaScript 框架也使用“大括号”来指示应在浏览器中显示给定表达式,因此您可以使用 @ 符号通知 Blade 渲染引擎某个表达式应保持不变。 https://laravel.com/docs/8.x/blade#blade-and-javascript-frameworks

在你的角度 {{}} 块之前使用 @

您的代码如下:

    <html lang="en" ng-app>
    <body>
    <div ng-controller="IdController" class="id-contain">
    
    <ul>
        <li ng-repeat="id in ids"> @{{ id.body }} </li>
    </ul>
    
    </div>
    </body>
    </html>

【讨论】:

  • 这不会像忽略警告一样吗??
  • 没有。由于许多 JavaScript 框架还使用“大括号”来指示应在浏览器中显示给定表达式,因此您可以使用 @ 符号来通知 Blade 渲染引擎表达式应保持不变。 laravel.com/docs/8.x/blade#blade-and-javascript-frameworks
【解决方案2】:

这是刀片的问题,您可以将 laravel 刀片模板令牌的配置从 {{}} 更改为其他类似 [[]]

Blade::setContentTags('[[', ']]');
Blade::setEscapedContentTags('[[[', ']]]');

另外,在您的 angularjs 代码中,您应该在控制器中将 $scope.id 重命名为 $scope.ids

更新刀片令牌

EDIT 或者您可以覆盖 Angular 的标签分隔符

DEMO

HTML

<div ng-app="main">
        <div ng-controller="IdController" class="id-contain">
        <ul>
                <li ng-repeat="id in ids">[[id.body]]</li>
            </ul>
    </div>
</div>

JS

angular.module('main', [])
.config(function ($interpolateProvider) {
    $interpolateProvider.startSymbol('[[');
    $interpolateProvider.endSymbol(']]');
})
.controller('IdController', function ($scope) {
    $scope.ids = [
        { body: 'some' },
        { body: 'boiler' },
        { body: 'plate' }
    ];
});

【讨论】:

  • 我已将控制器中的名称从 $scope.id 调整为 $scope.ids 无济于事,当我将 {{}} 更改为 [[]] 时,它会加载 [[ id.body ]] 3次,但不是价值。当我用 {{}} 运行它时,它给了我同样的错误,并被解析为 &lt;?php echo id.body; ?&gt;
  • 对不起,如果不是很清楚,我说的是 Blade::setContentTags('[[', ']]'); Blade::setEscapedContentTags('[[[', ']]]'); 的 laravel 配置
  • 我不确定那是错误,因为当我使用 vanilla PHP &lt;?php echo skill.body; ?&gt; 时,我仍然得到同样的错误:/
  • 这里似乎有些混乱,当您执行 echo skill.body 时,您正在尝试连接两个常量(可能未定义)技能和身体,这可能不是您想要的
  • hmm,你将如何在控制器中回显数组的内容?
【解决方案3】:

使用刀片解析器解析您的 html,如果您不需要使用刀片解析器解析此页面,请将您的文件从 myfield.blade.php 重命名为 myfile.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-12
    • 2015-07-11
    • 2014-05-07
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多