下划线没有采用模型阵列?

Sea*_*son 1 javascript backbone.js underscore.js

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);
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我的第二次采摘不起作用,但我的地图工作得很好?我认为这些是等效的用法.

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

在此输入图像描述

Kau*_*kar 7

骨干模型对象不会get在顶级javascript对象中存储模型中的属性.在currentVideo骨干模型对象实际存储的JavaScript对象中更深层次的属性,在(currentVideo.attributes).

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

区别在于Backbone Model对象比基本的javascript对象更复杂,并且不仅仅get通过检索来归属object['attrName'].

  • @ Sushanth--"currentVideos"只是一个模型数组,而不是一个集合.`pluck`总是返回一个数组,而不是一个集合.这个答案是对的. (2认同)