从 Backbone 集合中检索特定元素
Retrieving a specific element from a Backbone collection
考虑以下 backbone 集合:
我想做的是访问字段 'name'。这是我所做的:
this._selectedNodes.pluck('name').forEach((objectName) => {
$objectListLi.append(`<li>${objectName}</li>`);
});
但我一直收到 "undefined" 结果。更奇怪的是,当我使用 "id" 遍历集合时,我得到了结果。
知道为什么会这样吗?我该如何解决?
编辑:
注意这里 'id' 已经存在于模型下的第一层中:
但是,'name' 字段仅出现在属性下:
这会不会是 pluck 找不到 'name' 的原因?或许 pluck 只能再往下一层?
编辑 2:
我尝试了同样的事情,但使用的是 map 而不是 pluck:
this._selectedNodes.map(function(model){
return model.get('name');})
同样的事情,我得到了未定义。所以这排除了采摘问题的可能性。
编辑 3:
Got it work like this:
this._selectedNodes.map(function(model){
return model.attributes.get('name');})
现在,我得到了名称的值。但是,我仍然无法将它集成到 foreach 循环中。任何的想法?
在某些时候,您的名字似乎变得不确定了?也许检查一下。
对于所有节点,'name' 的 属性 是否始终可用?
this._selectedNodes.pluck('name').forEach((objectName) => {
if (objectName !== 'undefined') // Any scope
$objectListLi.append(`<li>${objectName}</li>`);
});
终于成功了。我删除了 pluck 并改用了 map 。该解决方案不是很优雅,但这是唯一对我有用的解决方案。
var names = this._selectedNodes.map(function (model) {
return model.attributes.get('name');
});
names.forEach(function (objectName) {
$objectListLi.append(`<li>${objectName}</li>`);
});
我希望它能帮助到其他人,感谢所有试图帮助我的人。
考虑以下 backbone 集合:
我想做的是访问字段 'name'。这是我所做的:
this._selectedNodes.pluck('name').forEach((objectName) => {
$objectListLi.append(`<li>${objectName}</li>`);
});
但我一直收到 "undefined" 结果。更奇怪的是,当我使用 "id" 遍历集合时,我得到了结果。
知道为什么会这样吗?我该如何解决?
编辑:
注意这里 'id' 已经存在于模型下的第一层中:
但是,'name' 字段仅出现在属性下:
这会不会是 pluck 找不到 'name' 的原因?或许 pluck 只能再往下一层?
编辑 2:
我尝试了同样的事情,但使用的是 map 而不是 pluck:
this._selectedNodes.map(function(model){
return model.get('name');})
同样的事情,我得到了未定义。所以这排除了采摘问题的可能性。
编辑 3:
Got it work like this:
this._selectedNodes.map(function(model){
return model.attributes.get('name');})
现在,我得到了名称的值。但是,我仍然无法将它集成到 foreach 循环中。任何的想法?
在某些时候,您的名字似乎变得不确定了?也许检查一下。 对于所有节点,'name' 的 属性 是否始终可用?
this._selectedNodes.pluck('name').forEach((objectName) => {
if (objectName !== 'undefined') // Any scope
$objectListLi.append(`<li>${objectName}</li>`);
});
终于成功了。我删除了 pluck 并改用了 map 。该解决方案不是很优雅,但这是唯一对我有用的解决方案。
var names = this._selectedNodes.map(function (model) {
return model.attributes.get('name');
});
names.forEach(function (objectName) {
$objectListLi.append(`<li>${objectName}</li>`);
});
我希望它能帮助到其他人,感谢所有试图帮助我的人。