我是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次,但不会加载值。当我用{{}}运行它时,它会给我同样的错误,并被解析为<?php echo id.body; ?>
由于许多JavaScript框架也使用";卷曲的";大括号表示给定的表达式应显示在浏览器中,您可以使用@符号通知Blade渲染引擎表达式应保持不变。https://laravel.com/docs/8.x/blade#blade-和javascript框架
在角度{{}}
块之前使用@
:
你的代码应该是:
<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>
这是刀片的问题,您可以将laravel对刀片模板令牌的配置从{{}}更改为其他类似[[]]的配置
Blade::setContentTags('[[', ']]');
Blade::setEscapedContentTags('[[[', ']]]');
另外,在angularjs代码中,您应该在控制器中将$scope.id
重命名为$scope.ids
更新刀片令牌
编辑或者您可以覆盖angular的标签分隔符
演示
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' }
];
});
您的html是用刀片解析器解析的,如果您不需要用刀片解析器来解析此页面,请将您的文件从myfield.blade.php
重命名为myfile.php