关于此输出的简单问题 var newVal = _.range(1); 的console.log(的newval); // [0]
var STARTING_NUMBER = 1;
var _names = ["Lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipisicing", "elit"];
var _bgcolors = ["#FC9D9A", "#F9CDAD", "#C8C8A9"];
var _colors = ["#FE4365", "#83AF9B"]
var _generateItem = function(){
return {
id: Math.random(),
name: _.sample(_names),
bgcolor: _.sample(_bgcolors),
color: _.sample(_colors),
opacity: new Transitionable(0),
transX: new Transitionable(-_width)
}
}
//why is _.range needed? why just make STARTING_NUMBER = [0];
$scope.items = _.map(_.range(STARTING_NUMBER), function(){
return _generateItem();
})
setInterval(function(){
$scope.add();
if(!$scope.$$phase)
$scope.$apply();
}, 1000)
答案 0 :(得分:1)
当传递单个值时,range函数将返回一个整数数组:
e.g. _.range(1) returns [0],
_.range(2) returns [0, 1]
代码的作用是在STARTING_NUMBER为1时调用generateItem,如果STARTING_NUMBER为2则调用两次等,并将generateItem的输出添加到数组中。
它可以更简洁地编码为:
$scope.items = _.times(STARTING_NUMBER, generateItem);
答案 1 :(得分:0)
这样做是为了保持逻辑的通用性。 代码尝试做的是生成一些项(返回值的函数)并将它们存储在长度为STARTING_NUMBER的数组中。 因此,如果STARTING_NUMBER只有1个值,即1,则假设为真, 但是在这里它可以保持动态,即1或2或10 ....,$ scope.items数组将是一个等于该长度的数组。
以下是一个使用更改值的演示,其中STARTING_NUMBER = 10(已注释掉的依赖项)
演示:http://jsfiddle.net/m02h0n3g/1/
var $scope = {};
var STARTING_NUMBER = 10;
var _names = ["Lorem", "ipsum", "dolor", "sit", "amet", "consectetur", "adipisicing", "elit"];
var _bgcolors = ["#FC9D9A", "#F9CDAD", "#C8C8A9"];
var _colors = ["#FE4365", "#83AF9B"]
var _generateItem = function(){
return {
id: Math.random(),
name: _.sample(_names),
bgcolor: _.sample(_bgcolors),
color: _.sample(_colors),
// opacity: new Transitionable(0),
// transX: new Transitionable(-_width)
}
}
//why is _.range needed? why just make STARTING_NUMBER = [0];
$scope.items = _.map(_.range(STARTING_NUMBER), function(){
return _generateItem();
})
console.log($scope.items);