2016-05-13 103 views
1

我想在Chrome的开发者控制台中进行调试。 在那里我想通过ID获取组件。在控制台中调试SAPUI5

sap.ui.getCore().byId('targetId') 

myAppName.Component.getMetadata(). 

应返回的组件,而不是只有DOM!

而我正在寻找的第二个是如何抓住一个模型。 我连着模式向Component.js:

// set device model 
var oDeviceModel = new JSONModel(Device); 
oDeviceModel.setDefaultBindingMode("OneWay"); 
this.setModel(oDeviceModel, "device"); 

我怎么能抓住这个从控制台。

myAppName.Component.getMetadata().getModels() 

这个返回的车型一些名字,但里面清单只有那些定义,没有数据,而不是我上面所描述的。

任何想法如何获得这些数据?

回答

1

可以使用byId方法,通过ID得到任何SAPUI5控制:

var oControl = sap.ui.getCore().byId("ID"); 

提供的ID必须为控制(组件,浏览的完整ID和复合控件通常会添加一个前缀到他们的内容)。这意味着您可以在此控件的顶级DOM元素上看到的id。

由于组件不是控件,因此您不会直接在DOM中找到它们,并且无法通过byId方法找到它们。
但是,您可以使用它来查找ComponentContainer,然后使用getComponentInstance来获取实际的组件。

var oComponent = sap.ui.getCore().byId("ComponentContainerId").getComponentInstance(); 

对于模型,控件和组件(技术上一切从ManagedObject继承)具有getModel方法这需要的型号名称作为参数。

将模型设置为组件后,组件和所有属于此组件的控件应该能够使用其名称获取模型。

// Set the Model in the Component 
oComponent.setModel(oModel, "myModel"); 


// Get the Model from the Component 
sap.ui.getCore().byId("ComponentContainerId").getComponentInstance().getModel("myModel"); 
+0

喜hirse,是这也是工作交叉分量?意味着完全不同的组件,还是只适用于本地定义的组件? – zyrex

+0

这适用于当前在浏览器中的所有内容。 – hirse

1

您还可以使用

var oComponent = sap.ui.component("componentID"); 

得到一个组件。

componentID是创建组件时所使用的ID:

var oComponent = sap.ui.component({ 
    name: "my.Component", 
    url: "my/component/location", 
    id: "componentID" 
}); 
+0

它不工作。我试图添加自动生成的ID和我添加到组件的ID。 – Dinkheller

+0

看到我编辑的答案 – cschuff