将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 %> <% member.lastname %></td>
</tr>
</table>
</div>
</div>
</div><!-- /row -->
<hr>
如果我省略$ interpolateProvider代码,一切正常,控制台上不会显示任何错误。有了它 - 然而 - nothings再次运行。我得到一个未捕获的错误:[$ injector:modulerr]
当我关注它时,我来:错误:$ injector:unpr未知提供商
我错过了什么吗?我尝试了AngularJS Docs和一些教程中的代码。所以它应该没问题。每次我遇到这个错误都会让我发疯。
我有人可以帮助我,我真的很感激。
非常感谢, AFX
答案 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为您处理。