2015-05-04 187 views
1

在下面的代碼我嘗試,如果它存在破壞JSON模式:Sapui5:模型不被破壞

if(sap.ui.getCore().getModel("modelId")){ 
    console.log(sap.ui.getCore().getModel("modelId")); 
    sap.ui.getCore().getModel("modelId").destroy(); 
}; 

但上述模型不被破壞。

上述模型被設置在另一個函數,它看起來像這樣:

var oModel = new sap.ui.model.json.JSONModel(); 
oModel.setData(oData); 
sap.ui.getCore().setModel(oModel, "modelId"); 
console.log(sap.ui.getCore().getModel("modelId")); 

日誌是:

第1段(在這裏我試圖摧毀模型):

C.extend.constructor {mEventRegistry: Object, oData: Object, bDestroyed: false, aBindings: Array[0], mContexts: Object…} 

第二個片段(其中模型設置):

EventProvider sap.ui.model.json.JSONModel 

我在這裏錯過了什麼?爲什麼日誌如此不同?

這個問題的主要問題是我試圖摧毀那個模型,但它不起作用。

+1

你確定「sap.ui.getCore()。getModel(」modelId「)」實際返回一個模型嗎?此對象是否具有屬性「destroy()」?您可以使用console.log(sap.ui.getCore()。getModel(「modelId」));如果你不知道。 – OddDev

回答

1

我檢查了API here,它表示Model實現可能會干擾destroy函數。 我與我的模型有相同的結果,當我試圖刪除它時,所有刪除的都是綁定,但不是整個模型。

var test = sap.ui.getCore().getModel("partnerDaten"); 
console.log(test); 
if(test !== undefined){ 
    sap.ui.getCore().getModel("partnerDaten").destroy(); 
    this.getView('bearbeiten').getModel("partnerDaten").refresh(true); 
    console.log(test); 
}; 

這些是控制檯日誌。

C.extend.constructor {mEventRegistry: Object, oData: Object, bDestroyed: false, aBindings: Array[46], mContexts: Object…} 
C.extend.constructor {mEventRegistry: Object, oData: Object, bDestroyed: true, aBindings: Array[0], mContexts: Object…} 

從上面的代碼示例中可以看到。我會繼續尋找,但我想這是不可能刪除整個模型。

+0

在SAP博客上找到類似的thrad - https://archive.sap.com/discussions/thread/3534349。從核心作品中取消設置模型 - 設置模型,如果您沒有給出任何名稱,則使用'sap.ui.getCore()。setModel();' 這將覆蓋舊模型。 既然你有一個名字,這次傳遞null。這是 'sap.ui.getCore()。setModel(null,'userModel');' – user557657