AngularJS和Laravel Blade:更改interpolateProvider时的模块错误(分隔符)

时间:2015-04-29 15:54:05

标签: angularjs laravel-5 delimiter blade angularjs-interpolate

将Laravel 5(使用Blade)和Angular 1.3结合使用时,我遇到了一个奇怪的问题。

我对Laravel很有经验,但是Angular的新手。我知道我必须改变Angular的分隔符才能使它与Laravel的Blade一起使用。

所以这就是我所做的:

//app.js

(function(){

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



  app.controller('TeamController', function(){

    // Do Something
  });

})();

在我的视图文件中我定义了ng-app和ng-controller。我的目标是迭代JSON。 JSON不是上面JS的一部分 - 我知道这一点。

<div class="container" ng-app="TeamManager">

<hr>
<div class="row" ng-controller="TeamController as team">
    <div class="col-xs-4">
        <div class="teamlist-container">
            <table class="table table-striped">
                    <tr ng-repeat='member in teammembers'>
                        <td><% member.firstname %>&nbsp;<% member.lastname %></td>
                    </tr>
                </table>
        </div>
    </div>      

</div><!-- /row -->
<hr>

如果我省略$ interpolateProvider代码,一切正常,控制台上不会显示任何错误。有了它 - 然而 - nothings再次运行。我得到一个未捕获的错误:[$ injector:modulerr]

当我关注它时,我来:错误:$ injector:unpr未知提供商

我错过了什么吗?我尝试了AngularJS Docs和一些教程中的代码。所以它应该没问题。每次我遇到这个错误都会让我发疯。

我有人可以帮助我,我真的很感激。

非常感谢, AFX

2 个答案:

答案 0 :(得分:2)

我认为您没有正确地注入提供程序,它应该在您的应用程序的配置方法的回调中。

尝试:

var app = angular.module('TeamManager', []);

app.config(function($interpolateProvider) {
    $interpolateProvider.startSymbol('<%');
    $interpolateProvider.endSymbol('%>');
});

更新:在OP的情况下,缩小过程并没有使用正在使用的角度语法。提问者需要以下列方式注入依赖项以与minify / uglify一起使用:

var app = angular.module('TeamViewer', ['deps', function(deps) {
    //...
}]);

app.config(['$interpolateProvider', function($interpolateProvider) {
    //...
}]);

此语法为minify,uglify安全。

答案 1 :(得分:1)

您不必更改$interpolate。要使用默认的{{ }}分隔符作为角度,只需添加@{{}},刀片将让javascript为您处理。