如何在php文件中使用AngularJS,同时呈现laravel视图


How to use AngularJS in .php file while rendering a laravel view

我是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文件。