我是laravel和AngularJS的新手。我正在尝试呈现一个视图,它是一个php文件。php文件正在被渲染,但其中的AngularJS表达式没有被评估。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" >
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"> </script>
<script src='public/AngularSorter.js'></script>
<script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.7/angular.min.js"> </script>
</head>
<body ng-app = 'store'>
<div ng-controller ='SorterController as sorter'>
<p>
{{ 4+4 }}
</p>
</div>
</form>
</body>
</html>
路线就像这个
Route::get('/', function () {
return view('Home');
});
我是不是错过了什么?我尝试将php文件重命名为.html,但不起作用。为什么视图不能呈现.html文件??。
我得到的输出是{{4+4}},而不是8。
Laravel Blade和AngularJS在处理变量时使用相同的语法{}。为了避免这种情况,您必须更改blade的语法或更改AngularJS的语法。详细信息请点击此处。
更改AngularJS语法:
var sampleApp = angular.module('sampleApp', [], function($interpolateProvider) {
$interpolateProvider.startSymbol('<%');
$interpolateProvider.endSymbol('%>');
});
-或-
更改Laravel刀片语法:
// You may place this code anywhere it is executed each request. Some people have used routes.php
Blade::setContentTags('<%', '%>'); // for variables and all things Blade
Blade::setEscapedContentTags('<%%', '%%>'); // for escaped data
此外,视图需要是.blade.php,而不是.html。这是所有laravel blade(视图)文件的标准。此处的文档:http://laravel.com/docs/master/blade
通过重新排序脚本标记解决了问题。Angular脚本标记应该放在开头,然后应该包括自己编写的javascript文件。