使用unexcore.js:
(_.map(_.zip([v,xs]),function(rs){return {a:rs[0],x:rs[1]}}))
给我一个语法错误
语法错误:表达式[( .map( .zip([v,xs]),function(rs){第34列处的标记'{'是意外的,期待[]]返回{a:rs [0],x:rs [1]}}))]从[{return {a:rs [0],x:rs [1]}}))]开始。
更多背景
<rect ng-repeat="z in (_.map(_.zip([v,xs]),function(rs){return {a:rs[0],x:rs[1]}}))" x="{{z.x.x(z.a)}}%" y="{{z.y.y(z.a)}}" width="{{z.x.w(z.a)}}" height="{{z.x.h(z.a)}}" style="fill:rgba({{z.x.s.r}},{{z.x.s.g}},{{z.x.s.b}},{z.x.s.a}})"/>
答案 0 :(得分:0)
您不能在Angular绑定中使用这些方法。我建议您使用它们来处理控制器中的数据,并使用ng-repeat来迭代处理过的数据。或者,如果您经常使用它们,您可以制作包围它们的Angular过滤器。
答案 1 :(得分:0)
angular
.module('app', [])
.controller('lodashUsageController', lodashUsageController);
function lodashUsageController($scope) {
$scope._ = _;
$scope.list = [1, 2, 3, 4, 5, 6];
$scope.even = function(item) {
return {
val: item,
isEven: item % 2 === 0
};
}
}
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.js"></script>
<div ng-app="app">
<div ng-controller="lodashUsageController">
<ul>
<li ng-repeat="item in _.map(list, even) track by $index">
{{item.val}} - {{item.isEven}}
</li>
</ul>
</div>
</div>
&#13;
正如Jon Snow所说,不建议直接在ng-repeat中使用lodash函数。
话虽如此,有办法做到这一点。我创建了这个jsbin example来演示它。
基本上,你需要做的是揭露&#34; _&#34;作为$ scope变量(因此角度绑定可以访问它)。
$scope._ = _;
您无法在绑定中使用直接匿名函数,尝试在控制器中创建它们,然后从ng-repeat中访问它。
HTML
<div ng-controller="lodashUsageController">
<ul>
<li ng-repeat="item in _.map(list, even) track by $index">
{{item}}
</li>
</div>
的javascript
function lodashUsageController($scope) {
$scope._ = _;
$scope.list = [1, 2, 3, 4, 5, 6];
$scope.even = function(item) {
return item % 2 === 0;
}
}