我想在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()
这会返回一些模型名称,但只返回清单中定义的那些名称,没有数据而不是我上面描述的那些。
知道如何获取这些数据吗?
答案 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"
});