2016-05-13 99 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