【问题标题】:Laravel 5.4 with angular variable errorLaravel 5.4 带有角度变量错误
【发布时间】:2017-08-25 16:32:15
【问题描述】:

我正在尝试在 Laravel 刀片中使用 Angular 1.6,它会引发异常。 我试过this link 来解决我尝试过的许多其他答案,但这些都不适合我。 这是代码

<div class="row" ng-app="CalculatorApp" ng-controller="CalculatorController">
    <p>Profit Before {{ var }} </p>
</div>

这里是Js co

angular.module('CalculatorApp', []).controller('CalculatorController', 
 function($scope) {
 $scope.var=0;
    });

这里是错误/异常

use of undefined constant var - assumed 'var'

【问题讨论】:

  • 不要使用“var”,它是javascript中的保留字,声明一个变量。
  • @axel.michel 我的 js 中有另一个名字。只是为了点/错误我已经改变了它。为了更容易理解
  • 重命名var的变量名并检查
  • 将 var 更改为任何其他名称并检查
  • 已经检查了吗?

标签: php angularjs laravel


【解决方案1】:

使用@ 来逃避刀片处理角度插值。

<div class="row" ng-app="CalculatorApp" ng-controller="CalculatorController">
    <p>Profit Before @{{ var }} </p>
</div>

【讨论】:

  • 先生,我用过。因为我的问题中有 Link/url/href。但它只打印包含 {{}} 的值。
  • 您是否更改了 Angular 或 laravel 的模板标签?你还需要检查你是否已经引导了角度
  • 先生,我正在使用引导程序,并且包含了 Angular 外部链接。我试图更改刀片标签和角度标签,但这些都不适合我。 :(
  • 你能告诉我应该在哪里更改刀片标签。可能是我将代码放入错误的文件中。\
【解决方案2】:

默认情况下,Laravel 和 Angular 都使用双花括号,这会导致您的错误:

在 Blade 中你可以将一个完整的块标记为字符串:

@verbatim
<div class="row" ng-app="CalculatorApp" ng-controller="CalculatorController">
    <p>Profit Before {{ var }} </p>
</div>
@endverbatim

或者你的角度:

var sampleApp = angular.module('sampleApp', [], function($interpolateProvider) {
    $interpolateProvider.startSymbol('<%');
    $interpolateProvider.endSymbol('%>');
});

在这种情况下,您所有的 Angular 模板代码都必须使用 &lt;%var%&gt; 之类的东西

【讨论】:

  • 可能是刀片缓存? - 看看:stackoverflow.com/questions/28548694/…,可能会有所帮助。
  • @MahmoodSanjrani 请注意,您只需更改两者之一(角度或刀片,如果您同时更改两者,则会重现错误。或尝试刀片选项“整个块原样”(请参阅​​更新回答)。
  • 先生,我已经单独检查了这些。期望 Blade::setContentTags('');当我使用它时显示另一个错误。可能是我没有将代码放在正确的位置。调用未定义的方法 Illuminate\View\Compilers\BladeCompiler::setContentTags()
  • 先生,你能告诉我我应该把这个Blade::setContentTags('&lt;%', '%&gt;');代码放在哪里吗?可能是因为这个。我遇到了错误。
  • @MahmoodSanjrani 我刚刚检查了 lavarel 的问题板,似乎团队删除了该选项:github.com/laravel/framework/issues/17736 - 没有办法再这样做了,你需要逃避整个块,或者使用@{{xxx}}
【解决方案3】:

Var 是 JavaScript 中的关键字,我希望重命名变量名足以修复。

【讨论】:

  • 查看我对问题的评论
【解决方案4】:

Laravel 也使用相同的模板标签,因此它会检查 laravel 变量。像这样改变角度

 $interpolateProvider.startSymbol('[{');
 $interpolateProvider.endSymbol('}]');

【讨论】:

    【解决方案5】:
    angular.module('CalculatorApp', [$scope]).controller('CalculatorController', function($scope) { $scope.var1=0; });
    

    看看这个。

    【讨论】:

    • $scope.var1=0; ?先生,我告诉过你没有变量名的问题。我的 JS 函数中有其他名称。
    • 在 [$scope] 中找到另一个更改
    【解决方案6】:

    我解决了我的问题。

    1) 我更改了库。

    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
    

    2) 在正文启动后更改代码。

        <body>
        var custom = angular.module('CalculatorApp', []);
    custom.config(function($interpolateProvider) {
        $interpolateProvider.startSymbol('[[');
        $interpolateProvider.endSymbol(']]');
    });
    custom.controller('CalculatorController', function($scope) {
        $scope.aa=0;
    
        }); 
    

    html .

    <div class="row" ng-app="CalculatorApp" ng-controller="CalculatorController">
            [[ aa ]]
         </div>
    

    感谢所有尝试解决此问题的人。 非常感谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 2019-01-29
      • 2017-12-26
      • 2017-12-26
      • 2017-12-11
      • 2017-11-14
      相关资源
      最近更新 更多