var currentVideos = this.get('items').pluck('video');

//  TODO: Why does pluck not work here?
var currentVideosDurations = _.map(currentVideos, function (currentVideo) {
    return currentVideo.get('duration');
});

var test = _.pluck(currentVideos, 'duration');
console.log("Test:", test);


我想知道为什么我第二次采摘不起作用,但是我的地图可以正常工作吗?我以为这些是对等的用法。

这是控制台日志的屏幕截图,显示了this.get('items')和currentVideos数组。

最佳答案

骨干模型对象不在顶级javascript对象中存储您从模型中的get属性。 currentVideo骨干模型对象实际上将属性存储在(currentVideo.attributes)中的javascript对象中。

_.pluck(currentVideos, 'duration')检查顶级属性(例如currentVideo['duration']),该属性不存在。

区别在于,主干模型对象比基本的javascript对象复杂,并且仅通过获取get而不具有object['attrName']属性。

09-07 23:12