SAPUI5在控制台中调试

时间:2016-05-13 06:24:46

标签: debugging sapui5

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

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()

这会返回一些模型名称,但只返回清单中定义的那些名称,没有数据而不是我上面描述的那些。

知道如何获取这些数据吗?

2 个答案:

答案 0 :(得分:1)

您可以使用byId方法通过ID获取任何SAPUI5 Control:

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

提供的id必须是Control的完整id(组件,视图和复合控件通常会在其内容中添加前缀)。这意味着您可以在此Control的顶级DOM元素上看到id。

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

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");

答案 1 :(得分:1)

您也可以使用

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

获取组件。

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

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