0

结合 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 代码,一切正常,控制台上不会显示任何错误。有了它——然而——一切都不再运行了。我得到一个未捕获的错误:[$injector:modulerr]

当我关注它时,我来到:错误:$injector:unpr Unknown Provider

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

我有人可以帮我解决这个问题,我将不胜感激。

非常感谢, AFX

4

2 回答 2

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 安全的。

于 2015-04-29T16:47:32.780 回答
1

你不必改变$interpolate。要为 angular 使用默认{{ }}分隔符,只需添加@{{}},blade 将让 javascript 为您处理。

于 2016-04-18T10:07:48.133 回答