我是Ember的一个完整的菜鸟,我必须从用Ember写的外部网站检索数据。
我安装了Ember检查器插件,我看到以下内容:
我可以在控制台调试窗口中输入哪些javascript命令来检索列表中的数据(ID和数字)?
我不能依靠Ember检查器进行数据检索,该工具仅用于检查结构。
感谢@kumkanillam,我在这里做到了:
似乎我可以知道列表中某个项目的每个属性的名称和类型,但我无法获得其值。
happy
数组是他的示例调用的结果:myStore.peekAll('common/following-info').toArray()
答案 0 :(得分:2)
看看这个 https://guides.emberjs.com/v2.14.0/ember-inspector/container/ https://guides.emberjs.com/v2.14.0/ember-inspector/object-inspector/#toc_exposing-objects-to-the-console
它解释得非常好。
您可以通过单击检查器中的$E
按钮将对象公开给控制台。这会将全局$ E变量设置为所选对象。
您还可以向控制台公开属性。将鼠标悬停在对象的属性上时,每个属性旁边都会显示一个$E
按钮。单击它以将属性的值公开给控制台。
您可以在控制台中运行以下代码。
function getApplication() {
let namespaces = Ember.Namespace.NAMESPACES;
let application;
namespaces.forEach(namespace => {
if (namespace instanceof window.Ember.Application) {
application = namespace;
return false;
}
});
return application;
}
你可以使用上面的函数来获取应用程序实例,从那里你可以查找访问service:store
,从那里你可以使用peekAll
所需的模型。为了单独查看所有必需的数据,我使用了像stringify这样的JSON方法然后解析。
我实际上使用了LinkedIn网站并使用他们的模型common/following-info
进行演示。您可以选择要查看的模型,
var myApp = getApplication();
var myStore = myApp.__container__.lookup('service:store')
myStore.peekAll('common/following-info')
myStore.peekAll('common/following-info').toArray()
JSON.stringify(myStore.peekAll('common/following-info').toArray())
JSON.parse(JSON.stringify(myStore.peekAll('common/following-info').toArray()))
更新2
myStore.peekAll('common/following-info')
此处返回DS.RecordArray并扩展Ember.ArrayProxy,这意味着您可以使用ArrayProxy中提供的方法。 forEach使用objectAt(index)
在您的情况下,您需要知道模型的属性名称以获取特定属性的值,如
let allRecords = myStore.peekAll('common/following-info');
allRecords.forEach(function(item){
console.log(item);
console.log(' Using get method to value ', item.get('propName'));
});
获取特定索引值
let allRecords = myStore.peekAll('common/following-info');
let firstRecord = allRecords.objectAt(0);
console.log(' First record propName value is',firstRecord.get('propName'));
在您的情况下,您希望打印整个对象而不提供每个属性名称,然后没有内置方式,我们需要使用JSON.stringify
和parse
进行一些黑客攻击以获得完美对象你在找。然后你可以使用Object.values
获取所有值。
let arrayOfObjectWithOnlyKeysAndValuesOfModel = JSON.parse(JSON.stringify(myStore.peekAll('common/following-info').toArray()));
arrayOfObjectWithOnlyKeysAndValuesOfModel.forEach(function(item){
console.log('item',item);
console.log(' item values alone ', Object.values(item));
});